2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   6  * The contents of this file constitute Original Code as defined in and 
   7  * are subject to the Apple Public Source License Version 1.1 (the 
   8  * "License").  You may not use this file except in compliance with the 
   9  * License.  Please obtain a copy of the License at 
  10  * http://www.apple.com/publicsource and read it before using this file. 
  12  * This Original Code and all software distributed under the License are 
  13  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  14  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  15  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  16  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the 
  17  * License for the specific language governing rights and limitations 
  20  * @APPLE_LICENSE_HEADER_END@ 
  22 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 
  24  * Copyright (c) 1982, 1986, 1991, 1993, 1994 
  25  *      The Regents of the University of California.  All rights reserved. 
  26  * (c) UNIX System Laboratories, Inc. 
  27  * All or some portions of this file are derived from material licensed 
  28  * to the University of California by American Telephone and Telegraph 
  29  * Co. or Unix System Laboratories, Inc. and are reproduced herein with 
  30  * the permission of UNIX System Laboratories, Inc. 
  32  * Redistribution and use in source and binary forms, with or without 
  33  * modification, are permitted provided that the following conditions 
  35  * 1. Redistributions of source code must retain the above copyright 
  36  *    notice, this list of conditions and the following disclaimer. 
  37  * 2. Redistributions in binary form must reproduce the above copyright 
  38  *    notice, this list of conditions and the following disclaimer in the 
  39  *    documentation and/or other materials provided with the distribution. 
  40  * 3. All advertising materials mentioning features or use of this software 
  41  *    must display the following acknowledgement: 
  42  *      This product includes software developed by the University of 
  43  *      California, Berkeley and its contributors. 
  44  * 4. Neither the name of the University nor the names of its contributors 
  45  *    may be used to endorse or promote products derived from this software 
  46  *    without specific prior written permission. 
  48  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 
  49  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  50  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
  51  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 
  52  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
  53  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
  54  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  55  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  56  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
  57  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  60  *      @(#)types.h     8.4 (Berkeley) 1/21/94 
  67 #include <sys/cdefs.h> 
  69 /* Machine type dependent parameters. */ 
  70 #include <machine/types.h> 
  72 #include <machine/ansi.h> 
  73 #include <machine/endian.h> 
  76 typedef unsigned char   u_char
; 
  77 typedef unsigned short  u_short
; 
  78 typedef unsigned int    u_int
; 
  79 typedef unsigned long   u_long
; 
  80 typedef unsigned short  ushort
;         /* Sys V compatibility */ 
  81 typedef unsigned int    uint
;           /* Sys V compatibility */ 
  84 typedef u_int64_t       u_quad_t
;       /* quads */ 
  85 typedef int64_t         quad_t
; 
  86 typedef quad_t 
*        qaddr_t
; 
  88 typedef char *          caddr_t
;        /* core address */ 
  89 typedef int32_t         daddr_t
;        /* disk address */ 
  90 typedef int32_t         dev_t
;          /* device number */ 
  91 typedef u_int32_t       fixpt_t
;        /* fixed point number */ 
  92 typedef u_int32_t       gid_t
;          /* group id */ 
  93 typedef u_int32_t       ino_t
;          /* inode number */ 
  94 typedef long            key_t
;          /* IPC key (for Sys V IPC) */ 
  95 typedef u_int16_t       mode_t
;         /* permissions */ 
  96 typedef u_int16_t       nlink_t
;        /* link count */ 
  97 typedef quad_t          off_t
;          /* file offset */ 
  98 typedef int32_t         pid_t
;          /* process id */ 
  99 typedef quad_t          rlim_t
;         /* resource limit */ 
 100 typedef int32_t         segsz_t
;        /* segment size */ 
 101 typedef int32_t         swblk_t
;        /* swap offset */ 
 102 typedef u_int32_t       uid_t
;          /* user id */ 
 105 #ifndef _POSIX_SOURCE 
 106 /* Major, minor numbers, dev_t's. */ 
 107 #define major(x)        ((int32_t)(((u_int32_t)(x) >> 24) & 0xff)) 
 108 #define minor(x)        ((int32_t)((x) & 0xffffff)) 
 109 #define makedev(x,y)    ((dev_t)(((x) << 24) | (y))) 
 112 #ifndef _BSD_CLOCK_T_DEFINED_ 
 113 #define _BSD_CLOCK_T_DEFINED_ 
 114 typedef _BSD_CLOCK_T_   
clock_t; 
 117 #ifndef _BSD_SIZE_T_DEFINED_ 
 118 #define _BSD_SIZE_T_DEFINED_ 
 119 typedef _BSD_SIZE_T_    
size_t; 
 122 #ifndef _BSD_SSIZE_T_DEFINED_ 
 123 #define _BSD_SSIZE_T_DEFINED_ 
 124 typedef _BSD_SSIZE_T_   ssize_t
; 
 127 #ifndef _BSD_TIME_T_DEFINED_ 
 128 #define _BSD_TIME_T_DEFINED_ 
 129 typedef _BSD_TIME_T_    
time_t; 
 132 #ifndef _POSIX_SOURCE 
 133 #define NBBY    8               /* number of bits in a byte */ 
 136  * Select uses bit masks of file descriptors in longs.  These macros 
 137  * manipulate such bit fields (the filesystem macros use chars). 
 140 #define FD_SETSIZE      1024 
 143 typedef int32_t fd_mask
; 
 144 #define NFDBITS (sizeof(fd_mask) * NBBY)        /* bits per mask */ 
 147 #define howmany(x, y)   (((x) + ((y) - 1)) / (y)) 
 150 typedef struct fd_set 
{ 
 151         fd_mask fds_bits
[howmany(FD_SETSIZE
, NFDBITS
)]; 
 154 #define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) 
 155 #define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) 
 156 #define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) 
 157 #define FD_COPY(f, t)   bcopy(f, t, sizeof(*(f))) 
 158 #define FD_ZERO(p)      bzero(p, sizeof(*(p))) 
 160 #if defined(__STDC__) && defined(KERNEL) 
 162  * Forward structure declarations for function prototypes.  We include the 
 163  * common structures that cross subsystem boundaries here; others are mostly 
 164  * used in the same place that the structure is defined. 
 176 #endif /* !_POSIX_SOURCE */ 
 177 #endif /* __ASSEMBLER__ */ 
 179 struct _pthread_handler_rec
 
 181         void           (*routine
)(void *);  /* Routine to call */ 
 182         void           *arg
;                 /* Argument to pass */ 
 183         struct _pthread_handler_rec 
*next
; 
 186 #ifndef __POSIX_LIB__ 
 188 #define __PTHREAD_SIZE__           596  
 189 #define __PTHREAD_ATTR_SIZE__      36 
 190 #define __PTHREAD_MUTEXATTR_SIZE__ 8 
 191 #define __PTHREAD_MUTEX_SIZE__     40 
 192 #define __PTHREAD_CONDATTR_SIZE__  4 
 193 #define __PTHREAD_COND_SIZE__      24 
 194 #define __PTHREAD_ONCE_SIZE__      4 
 197 typedef struct _opaque_pthread_t 
{ long sig
; struct _pthread_handler_rec  
*cleanup_stack
; char opaque
[__PTHREAD_SIZE__
];} *pthread_t
; 
 199 typedef struct _opaque_pthread_attr_t 
{ long sig
; char opaque
[__PTHREAD_ATTR_SIZE__
]; } pthread_attr_t
; 
 201 typedef struct _opaque_pthread_mutexattr_t 
{ long sig
; char opaque
[__PTHREAD_MUTEXATTR_SIZE__
]; } pthread_mutexattr_t
; 
 203 typedef struct _opaque_pthread_mutex_t 
{ long sig
; char opaque
[__PTHREAD_MUTEX_SIZE__
]; } pthread_mutex_t
; 
 205 typedef struct _opaque_pthread_condattr_t 
{ long sig
; char opaque
[__PTHREAD_CONDATTR_SIZE__
]; } pthread_condattr_t
; 
 207 typedef struct _opaque_pthread_cond_t 
{ long sig
;  char opaque
[__PTHREAD_COND_SIZE__
]; } pthread_cond_t
; 
 209 typedef struct { long sig
; char opaque
[__PTHREAD_ONCE_SIZE__
]; } pthread_once_t
; 
 211 #endif /* __POSIX_LIB__ */ 
 213 typedef unsigned long pthread_key_t
;    /* Opaque 'pointer' */ 
 215 #endif /* !_SYS_TYPES_H_ */