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