/* @(#)types.h 4.1.1.4 (ULTRIX) 9/10/88 */ /************************************************************************ * * * Copyright (c) 1984, 1986, 1987 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * This software is derived from software received from the * * University of California, Berkeley, and from Bell * * Laboratories. Use, duplication, or disclosure is subject to * * restrictions under license agreements with University of * * California and with AT&T. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************/ /* ------------------------------------------------------------------------ * Modification History: /sys/h/types.h * * 15-Jan-88 lp * Merge of final 43BSD changes. * * 31-August-1987 -- Mark Parenti * Add definitions needed for POSIX compliance * * 27-April-1987 -- Larry Cohen * Modify the typedef "fd_set" to accomodate 64 file descriptors. * * David L Ballenger, 8-Mar-1985 * 0002 Add types for System V compatibility. * * 23 Oct 84 -- jrs * Add ifdef so we can be nested without problem * Derived from 4.2BSD, labeled: * types.h 6.2 84/06/09 * * ----------------------------------------------------------------------- */ #ifndef _TYPES_ #define _TYPES_ /* * Basic system types and major/minor device constructing/busting macros. */ /* major part of a device */ #define major(x) ((int)(((unsigned)(x)>>8)&0377)) /* minor part of a device */ #define minor(x) ((int)((x)&0377)) /* make a device number */ #define makedev(x,y) ((dev_t)(((x)<<8) | (y))) typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned int uint; /* sys V compatibility */ typedef unsigned long u_long; typedef unsigned short ushort; /* sys III compat */ #ifdef vax typedef struct _physadr { int r[1]; } *physadr; typedef struct label_t { int val[14]; } label_t; #endif vax #ifdef mips typedef struct _physadr { int r[1]; } *physadr; /* * WARNING: * this must match the definition of kernel jmpbuf's in machine/pcb.h */ typedef struct label_t { int val[12]; } label_t; #endif mips typedef struct _quad { long val[2]; } quad; typedef long daddr_t; typedef char * caddr_t; typedef u_long ino_t; typedef u_long gno_t; typedef short cnt_t; /* sys V compatibility */ typedef long swblk_t; /* Warning here (bub) */ /*typedef int size_t;*/ typedef int time_t; typedef short dev_t; typedef int off_t; typedef long paddr_t; /* sys V compatibility */ typedef long key_t; /* sys V compatibility */ typedef int clock_t; /* POSIX compliance */ typedef u_short mode_t; /* POSIX compliance */ typedef short nlink_t; /* POSIX compliance */ typedef short uid_t; /* POSIX compliance */ typedef int pid_t; /* POSIX compliance */ typedef short gid_t; /* POSIX compliance */ #define NBBY 8 /* number of bits in a byte */ /* * Select uses bit masks of file descriptors in longs. * These macros manipulate such bit fields (the filesystem macros use chars). * FD_SETSIZE may be defined by the user, but the default here * should be >= NOFILE (param.h). */ #ifndef FD_SETSIZE #define FD_SETSIZE 64 #endif FD_SETSIZE /* How many things we'll allow select to use. 0 if unlimited */ #define MAXSELFD 64 typedef long fd_mask; #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask (power of 2!)*/ #define NFDSHIFT 5 /* Shift based on above */ #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif howmany typedef struct fd_set { fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; } fd_set; #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) #endif _TYPES_