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 */ 15typedef unsigned long u_long; 16typedef unsigned int u_int; 17typedef unsigned short u_short; 18typedef unsigned char u_char; 19 20 21/* sysV compatibility */ 22typedef unsigned long ulong; 23typedef unsigned short ushort; 24typedef unsigned int uint; 25typedef unsigned char unchar; 26 27 28typedef __haiku_int64 blkcnt_t; 29typedef __haiku_std_int32 blksize_t; 30typedef __haiku_int64 fsblkcnt_t; 31typedef __haiku_int64 fsfilcnt_t; 32typedef __haiku_int64 off_t; 33typedef __haiku_int64 ino_t; 34typedef __haiku_std_int32 cnt_t; 35typedef __haiku_int32 dev_t; 36typedef __haiku_int32 pid_t; 37typedef __haiku_int32 id_t; 38 39typedef __haiku_std_uint32 uid_t; 40typedef __haiku_std_uint32 gid_t; 41typedef __haiku_std_uint32 mode_t; 42typedef __haiku_std_uint32 umode_t; 43typedef __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 50typedef char* caddr_t; 51 52typedef __haiku_addr_t addr_t; 53typedef __haiku_int32 key_t; 54 55typedef __haiku_std_int32 clockid_t; 56typedef struct __timer_t* timer_t; 57 58 59/* pthread types */ 60 61typedef struct _pthread_thread *pthread_t; 62typedef struct _pthread_attr *pthread_attr_t; 63typedef struct _pthread_mutex pthread_mutex_t; 64typedef struct _pthread_mutexattr *pthread_mutexattr_t; 65typedef struct _pthread_cond pthread_cond_t; 66typedef struct _pthread_condattr *pthread_condattr_t; 67typedef int pthread_key_t; 68typedef struct _pthread_once pthread_once_t; 69typedef struct _pthread_rwlock pthread_rwlock_t; 70typedef struct _pthread_rwlockattr *pthread_rwlockattr_t; 71typedef struct _pthread_spinlock pthread_spinlock_t; 72/* 73typedef struct _pthread_barrier *pthread_barrier_t; 74typedef struct _pthread_barrierattr *pthread_barrierattr_t; 75*/ 76 77struct _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 85struct _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 93struct _pthread_once { 94 __haiku_std_int32 state; 95}; 96 97struct _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 114struct _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