1 /* 2 * Copyright 2002-2012 Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _SYS_TYPES_H 6 #define _SYS_TYPES_H 7 8 9 #include <config/types.h> 10 11 #include <BeBuild.h> 12 13 14 /* BSD compatibility */ 15 typedef unsigned long u_long; 16 typedef unsigned int u_int; 17 typedef unsigned short u_short; 18 typedef unsigned char u_char; 19 20 21 /* sysV compatibility */ 22 typedef unsigned long ulong; 23 typedef unsigned short ushort; 24 typedef unsigned int uint; 25 typedef unsigned char unchar; 26 27 28 typedef __haiku_int64 blkcnt_t; 29 typedef __haiku_std_int32 blksize_t; 30 typedef __haiku_int64 fsblkcnt_t; 31 typedef __haiku_int64 fsfilcnt_t; 32 typedef __haiku_int64 off_t; 33 typedef __haiku_int64 ino_t; 34 typedef __haiku_std_int32 cnt_t; 35 typedef __haiku_int32 dev_t; 36 typedef __haiku_int32 pid_t; 37 typedef __haiku_int32 id_t; 38 39 typedef __haiku_std_uint32 uid_t; 40 typedef __haiku_std_uint32 gid_t; 41 typedef __haiku_std_uint32 mode_t; 42 typedef __haiku_std_uint32 umode_t; 43 typedef __haiku_std_int32 nlink_t; 44 45 #ifdef __HAIKU_BEOS_COMPATIBLE_TYPES 46 typedef int daddr_t; /* disk address */ 47 #else 48 typedef off_t daddr_t; /* disk address */ 49 #endif 50 typedef char* caddr_t; 51 52 typedef __haiku_addr_t addr_t; 53 typedef __haiku_int32 key_t; 54 55 typedef __haiku_std_int32 clockid_t; 56 typedef struct __timer_t* timer_t; 57 58 59 /* pthread types */ 60 61 typedef struct _pthread_thread *pthread_t; 62 typedef struct _pthread_attr *pthread_attr_t; 63 typedef struct _pthread_mutex pthread_mutex_t; 64 typedef struct _pthread_mutexattr *pthread_mutexattr_t; 65 typedef struct _pthread_cond pthread_cond_t; 66 typedef struct _pthread_condattr *pthread_condattr_t; 67 typedef int pthread_key_t; 68 typedef struct _pthread_once pthread_once_t; 69 typedef struct _pthread_rwlock pthread_rwlock_t; 70 typedef struct _pthread_rwlockattr *pthread_rwlockattr_t; 71 typedef struct _pthread_spinlock pthread_spinlock_t; 72 /* 73 typedef struct _pthread_barrier *pthread_barrier_t; 74 typedef struct _pthread_barrierattr *pthread_barrierattr_t; 75 */ 76 77 struct _pthread_mutex { 78 __haiku_std_uint32 flags; 79 __haiku_std_int32 lock; 80 __haiku_std_int32 unused; 81 __haiku_std_int32 owner; 82 __haiku_std_int32 owner_count; 83 }; 84 85 struct _pthread_cond { 86 __haiku_std_uint32 flags; 87 __haiku_std_int32 unused; 88 pthread_mutex_t* mutex; 89 __haiku_std_int32 waiter_count; 90 __haiku_std_int32 lock; 91 }; 92 93 struct _pthread_once { 94 __haiku_std_int32 state; 95 }; 96 97 struct _pthread_rwlock { 98 __haiku_std_uint32 flags; 99 __haiku_std_int32 owner; 100 union { 101 struct { 102 __haiku_std_int32 sem; 103 } shared; 104 struct { 105 __haiku_std_int32 lock_sem; 106 __haiku_std_int32 lock_count; 107 __haiku_std_int32 reader_count; 108 __haiku_std_int32 writer_count; 109 void* waiters[2]; 110 } local; 111 } u; 112 }; 113 114 struct _pthread_spinlock { 115 __haiku_std_int32 lock; 116 }; 117 118 119 #include <null.h> 120 #include <size_t.h> 121 #include <time.h> 122 123 #endif 124