1 /* 2 * Copyright (c) 1982 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)types.h 7.11 (Berkeley) 6/25/90 7 * 8 * 9 * RCS Modification History: 10 * $Log: s_types.h,v $ 11 * Revision 1.2 2005/07/22 15:02:04 rsmith 12 * treat socklen_t arguments consistently. 13 * 14 * Revision 1.1 2001/04/03 20:35:37 juran 15 * Phil Churchill's MIT-derived OT sockets library. No changes prior to initial check-in. 16 * 17 * Revision 6.0 1997/08/25 18:37:57 madden 18 * Revision changed to 6.0 19 * 20 * Revision 4.0 1995/07/26 13:56:09 ostell 21 * force revision to 4.0 22 * 23 * Revision 1.3 1995/05/17 17:57:43 epstein 24 * add RCS log revision history 25 * 26 */ 27 28 #ifndef _TYPES_ 29 #define _TYPES_ 30 31 #if !defined(_NCBI_) && !defined(Int4) 32 #define Int4 long 33 #endif 34 35 //typedef short dev_t; 36 #ifndef _POSIX_SOURCE 37 /* major part of a device */ 38 #define major(x) ((int)(((unsigned)(x)>>8)&0377)) 39 /* minor part of a device */ 40 #define minor(x) ((int)((x)&0377)) 41 /* make a device number */ 42 #define makedev(x,y) ((dev_t)(((x)<<8) | (y))) 43 #endif 44 45 typedef unsigned char u_char; 46 typedef unsigned short u_short; 47 typedef unsigned int u_int; 48 typedef unsigned long u_long; 49 typedef unsigned short ushort; /* Sys V compatibility */ 50 51 #ifdef KERNEL 52 #include "machine/machtypes.h" 53 #else 54 //#include <ma_types.h> 55 #endif 56 57 #ifdef _CLOCK_T_ 58 typedef _CLOCK_T_ clock_t; 59 #undef _CLOCK_T_ 60 #endif 61 62 #ifdef _TIME_T_ 63 typedef _TIME_T_ time_t; 64 #undef _TIME_T_ 65 #endif 66 67 #ifdef _SIZE_T_ 68 #if !defined(THINK_C) && !defined(COMP_THINKC) && !defined(__MWERKS__) && !defined(COMP_METRO) 69 typedef _SIZE_T_ size_t; 70 #endif 71 #undef _SIZE_T_ 72 #endif 73 74 #ifndef _POSIX_SOURCE 75 typedef struct _uquad { unsigned long val[2]; } u_quad; 76 typedef struct _quad { long val[2]; } quad; 77 #endif 78 typedef long * qaddr_t; /* should be typedef quad * qaddr_t; */ 79 80 typedef long daddr_t; 81 typedef char * caddr_t; 82 //typedef u_long ino_t; 83 typedef long swblk_t; 84 typedef long segsz_t; 85 //typedef long off_t; 86 //typedef u_short uid_t; 87 //typedef u_short gid_t; 88 typedef short pid_t; 89 /* size of address structures */ 90 typedef UInt32 socklen_t; 91 #define HAVE_SOCKLEN_T 1 92 93 //typedef u_short nlink_t; 94 //typedef u_short mode_t; 95 typedef u_long fixpt_t; 96 97 #ifndef _POSIX_SOURCE 98 #define NBBY 8 /* number of bits in a byte */ 99 100 /* 101 * Select uses bit masks of file descriptors in longs. These macros 102 * manipulate such bit fields (the filesystem macros use chars). 103 * FD_SETSIZE may be defined by the user, but the default here should 104 * be >= NOFILE (param.h). 105 */ 106 #ifndef FD_SETSIZE 107 #define FD_SETSIZE 256 108 #endif 109 110 //typedef long fd_mask; 111 //#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ 112 #define NUMBITSPERBYTE 8 /* Number of bits per byte */ 113 114 115 #ifndef howmany 116 #define howmany(x, y) (((x)+((y)-1))/(y)) 117 #endif 118 119 /* structures for select */ 120 typedef long fd_mask; 121 #define NFDBITS (sizeof(fd_mask) * NUMBITSPERBYTE) /* bits per mask */ 122 123 typedef struct fd_set { 124 fd_mask fds_bits[(FD_SETSIZE + NFDBITS - 1) / NFDBITS]; 125 } fd_set; 126 127 /* macros for select */ 128 #define FD_SET(fd, fdset) ((fdset)->fds_bits[(fd) / NFDBITS] |= ((unsigned)1 << ((fd) % NFDBITS))) 129 #define FD_CLR(fd, fdset) ((fdset)->fds_bits[(fd) / NFDBITS] &= ~((unsigned)1 << ((fd) % NFDBITS))) 130 #define FD_ISSET(fd, fdset) ((fdset)->fds_bits[(fd) / NFDBITS] & ((unsigned)1 << ((fd) % NFDBITS))) 131 #define FD_ZERO(fdset) memset((char *)(fdset), 0, sizeof(*(fdset))) 132 133 134 #endif /* !_POSIX_SOURCE */ 135 #endif /* _TYPES_ */ 136