File: /usr/include/sys/_types.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*
       2:  * Copyright (c) 2003-2007 Apple Inc. All rights reserved.
       3:  *
       4:  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
       5:  * 
       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.
      14:  * 
      15:  * Please obtain a copy of the License at
      16:  * http://www.opensource.apple.com/apsl/ and read it before using this file.
      17:  * 
      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.
      25:  * 
      26:  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
      27:  */
      28: 
      29: #ifndef _SYS__TYPES_H_
      30: #define _SYS__TYPES_H_
      31: 
      32: #include <sys/cdefs.h>
      33: #include <machine/_types.h>
      34: 
      35: /* pthread opaque structures */
      36: #if defined(__LP64__)
      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
      46: #else /* __LP64__ */
      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
      56: #endif /* __LP64__ */
      57: 
      58: struct __darwin_pthread_handler_rec
      59: {
      60:     void           (*__routine)(void *);    /* Routine to call */
      61:     void           *__arg;            /* Argument to pass */
      62:     struct __darwin_pthread_handler_rec *__next;
      63: };
      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__]; };
      73: 
      74: /*
      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.
      78:  */
      79: 
      80: #ifdef __cplusplus
      81: #ifdef __GNUG__
      82: #define __DARWIN_NULL __null
      83: #else /* ! __GNUG__ */
      84: #ifdef __LP64__
      85: #define __DARWIN_NULL (0L)
      86: #else /* !__LP64__ */
      87: #define __DARWIN_NULL 0
      88: #endif /* __LP64__ */
      89: #endif /* __GNUG__ */
      90: #else /* ! __cplusplus */
      91: #define __DARWIN_NULL ((void *)0)
      92: #endif /* __cplusplus */
      93: 
      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];
     137: 
     138: #endif    /* _SYS__TYPES_H_ */
     139: