2  * Copyright (c) 2003-2007 Apple Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. The rights granted to you under the License 
  10  * may not be used to create, or enable the creation or redistribution of, 
  11  * unlawful or unlicensed copies of an Apple operating system, or to 
  12  * circumvent, violate, or enable the circumvention or violation of, any 
  13  * terms of an Apple operating system software license agreement. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  18  * The Original Code and all software distributed under the License are 
  19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  23  * Please see the License for the specific language governing rights and 
  24  * limitations under the License. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  29 #ifndef _SYS__TYPES_H_ 
  30 #define _SYS__TYPES_H_ 
  32 #include <sys/cdefs.h> 
  33 #include <machine/_types.h> 
  35 /* pthread opaque structures */ 
  37 #define __PTHREAD_SIZE__           1168 
  38 #define __PTHREAD_ATTR_SIZE__      56 
  39 #define __PTHREAD_MUTEXATTR_SIZE__ 8 
  40 #define __PTHREAD_MUTEX_SIZE__     56 
  41 #define __PTHREAD_CONDATTR_SIZE__  8 
  42 #define __PTHREAD_COND_SIZE__      40 
  43 #define __PTHREAD_ONCE_SIZE__      8 
  44 #define __PTHREAD_RWLOCK_SIZE__      192 
  45 #define __PTHREAD_RWLOCKATTR_SIZE__      16 
  47 #define __PTHREAD_SIZE__           596  
  48 #define __PTHREAD_ATTR_SIZE__      36 
  49 #define __PTHREAD_MUTEXATTR_SIZE__ 8 
  50 #define __PTHREAD_MUTEX_SIZE__     40 
  51 #define __PTHREAD_CONDATTR_SIZE__  4 
  52 #define __PTHREAD_COND_SIZE__      24 
  53 #define __PTHREAD_ONCE_SIZE__      4 
  54 #define __PTHREAD_RWLOCK_SIZE__    124 
  55 #define __PTHREAD_RWLOCKATTR_SIZE__ 12 
  58 struct __darwin_pthread_handler_rec
 
  60         void           (*__routine
)(void *);    /* Routine to call */ 
  61         void           *__arg
;                  /* Argument to pass */ 
  62         struct __darwin_pthread_handler_rec 
*__next
; 
  64 struct _opaque_pthread_attr_t 
{ long __sig
; char __opaque
[__PTHREAD_ATTR_SIZE__
]; }; 
  65 struct _opaque_pthread_cond_t 
{ long __sig
; char __opaque
[__PTHREAD_COND_SIZE__
]; }; 
  66 struct _opaque_pthread_condattr_t 
{ long __sig
; char __opaque
[__PTHREAD_CONDATTR_SIZE__
]; }; 
  67 struct _opaque_pthread_mutex_t 
{ long __sig
; char __opaque
[__PTHREAD_MUTEX_SIZE__
]; }; 
  68 struct _opaque_pthread_mutexattr_t 
{ long __sig
; char __opaque
[__PTHREAD_MUTEXATTR_SIZE__
]; }; 
  69 struct _opaque_pthread_once_t 
{ long __sig
; char __opaque
[__PTHREAD_ONCE_SIZE__
]; }; 
  70 struct _opaque_pthread_rwlock_t 
{ long __sig
; char __opaque
[__PTHREAD_RWLOCK_SIZE__
]; }; 
  71 struct _opaque_pthread_rwlockattr_t 
{ long __sig
; char __opaque
[__PTHREAD_RWLOCKATTR_SIZE__
]; }; 
  72 struct _opaque_pthread_t 
{ long __sig
; struct __darwin_pthread_handler_rec  
*__cleanup_stack
; char __opaque
[__PTHREAD_SIZE__
]; }; 
  75  * Type definitions; takes common type definitions that must be used 
  76  * in multiple header files due to [XSI], removes them from the system 
  77  * space, and puts them in the implementation space. 
  82 #define __DARWIN_NULL __null 
  83 #else /* ! __GNUG__ */ 
  85 #define __DARWIN_NULL (0L) 
  87 #define __DARWIN_NULL 0 
  90 #else /* ! __cplusplus */ 
  91 #define __DARWIN_NULL ((void *)0) 
  92 #endif /* __cplusplus */ 
  94 typedef __int64_t       __darwin_blkcnt_t
;      /* total blocks */ 
  95 typedef __int32_t       __darwin_blksize_t
;     /* preferred block size */ 
  96 typedef __int32_t       __darwin_dev_t
;         /* dev_t */ 
  97 typedef unsigned int    __darwin_fsblkcnt_t
;    /* Used by statvfs and fstatvfs */ 
  98 typedef unsigned int    __darwin_fsfilcnt_t
;    /* Used by statvfs and fstatvfs */ 
  99 typedef __uint32_t      __darwin_gid_t
;         /* [???] process and group IDs */ 
 100 typedef __uint32_t      __darwin_id_t
;          /* [XSI] pid_t, uid_t, or gid_t*/ 
 101 typedef __uint64_t      __darwin_ino64_t
;       /* [???] Used for 64 bit inodes */ 
 102 #if __DARWIN_64_BIT_INO_T 
 103 typedef __darwin_ino64_t __darwin_ino_t
;        /* [???] Used for inodes */ 
 104 #else /* !__DARWIN_64_BIT_INO_T */ 
 105 typedef __uint32_t      __darwin_ino_t
;         /* [???] Used for inodes */ 
 106 #endif /* __DARWIN_64_BIT_INO_T */ 
 107 typedef __darwin_natural_t __darwin_mach_port_name_t
; /* Used by mach */ 
 108 typedef __darwin_mach_port_name_t __darwin_mach_port_t
; /* Used by mach */ 
 109 typedef __uint16_t      __darwin_mode_t
;        /* [???] Some file attributes */ 
 110 typedef __int64_t       __darwin_off_t
;         /* [???] Used for file sizes */ 
 111 typedef __int32_t       __darwin_pid_t
;         /* [???] process and group IDs */ 
 112 typedef struct _opaque_pthread_attr_t
 
 113                         __darwin_pthread_attr_t
; /* [???] Used for pthreads */ 
 114 typedef struct _opaque_pthread_cond_t
 
 115                         __darwin_pthread_cond_t
; /* [???] Used for pthreads */ 
 116 typedef struct _opaque_pthread_condattr_t
 
 117                         __darwin_pthread_condattr_t
; /* [???] Used for pthreads */ 
 118 typedef unsigned long   __darwin_pthread_key_t
; /* [???] Used for pthreads */ 
 119 typedef struct _opaque_pthread_mutex_t
 
 120                         __darwin_pthread_mutex_t
; /* [???] Used for pthreads */ 
 121 typedef struct _opaque_pthread_mutexattr_t
 
 122                         __darwin_pthread_mutexattr_t
; /* [???] Used for pthreads */ 
 123 typedef struct _opaque_pthread_once_t
 
 124                         __darwin_pthread_once_t
; /* [???] Used for pthreads */ 
 125 typedef struct _opaque_pthread_rwlock_t
 
 126                         __darwin_pthread_rwlock_t
; /* [???] Used for pthreads */ 
 127 typedef struct _opaque_pthread_rwlockattr_t
 
 128                         __darwin_pthread_rwlockattr_t
; /* [???] Used for pthreads */ 
 129 typedef struct _opaque_pthread_t
 
 130                         *__darwin_pthread_t
;    /* [???] Used for pthreads */ 
 131 typedef __uint32_t      __darwin_sigset_t
;      /* [???] signal set */ 
 132 typedef __int32_t       __darwin_suseconds_t
;   /* [???] microseconds */ 
 133 typedef __uint32_t      __darwin_uid_t
;         /* [???] user IDs */ 
 134 typedef __uint32_t      __darwin_useconds_t
;    /* [???] microseconds */ 
 135 typedef unsigned char   __darwin_uuid_t
[16]; 
 136 typedef char    __darwin_uuid_string_t
[37]; 
 140 #define offsetof(type, member)  ((size_t)(&((type *)0)->member)) 
 141 #endif /* offsetof */ 
 143 #endif  /* _SYS__TYPES_H_ */