175 lines
4.6 KiB
C
175 lines
4.6 KiB
C
/* unified sys/types.h:
|
|
start with sef's sysvi386 version.
|
|
merge go32 version -- a few ifdefs.
|
|
h8300hms, h8300xray, and sysvnecv70 disagree on the following types:
|
|
|
|
typedef int gid_t;
|
|
typedef int uid_t;
|
|
typedef int dev_t;
|
|
typedef int ino_t;
|
|
typedef int mode_t;
|
|
typedef int caddr_t;
|
|
|
|
however, these aren't "reasonable" values, the sysvi386 ones make far
|
|
more sense, and should work sufficiently well (in particular, h8300
|
|
doesn't have a stat, and the necv70 doesn't matter.) -- eichin
|
|
*/
|
|
|
|
#ifndef _SYS_TYPES_H
|
|
#define _SYS_TYPES_H
|
|
|
|
#if defined (_WIN32) || defined (__CYGWIN__)
|
|
#define __MS_types__
|
|
#endif
|
|
|
|
#ifdef __i386__
|
|
#if defined (GO32) || defined (__MSDOS__)
|
|
#define __MS_types__
|
|
#endif
|
|
#endif
|
|
|
|
# include <stddef.h>
|
|
# include <machine/types.h>
|
|
|
|
/* To ensure the stat struct's layout doesn't change when sizeof(int), etc.
|
|
changes, we assume sizeof short and long never change and have all types
|
|
used to define struct stat use them and not int where possible.
|
|
Where not possible, _ST_INTxx are used. It would be preferable to not have
|
|
such assumptions, but until the extra fluff is necessary, it's avoided.
|
|
No 64 bit targets use stat yet. What to do about them is postponed
|
|
until necessary. */
|
|
#ifdef __GNUC__
|
|
#define _ST_INT32 __attribute__ ((__mode__ (__SI__)))
|
|
#else
|
|
#define _ST_INT32
|
|
#endif
|
|
|
|
# ifndef _POSIX_SOURCE
|
|
|
|
# define physadr physadr_t
|
|
# define quad quad_t
|
|
|
|
#ifndef _WINSOCK_H
|
|
typedef unsigned char u_char;
|
|
typedef unsigned short u_short;
|
|
typedef unsigned int u_int;
|
|
typedef unsigned long u_long;
|
|
#endif
|
|
|
|
typedef unsigned short ushort; /* System V compatibility */
|
|
typedef unsigned int uint; /* System V compatibility */
|
|
# endif /*!_POSIX_SOURCE */
|
|
|
|
#ifndef __time_t_defined
|
|
typedef _TIME_T_ time_t;
|
|
#define __time_t_defined
|
|
#endif
|
|
|
|
typedef long daddr_t;
|
|
typedef char * caddr_t;
|
|
|
|
#ifdef __MS_types__
|
|
typedef unsigned long ino_t;
|
|
#else
|
|
#ifdef __sparc__
|
|
typedef unsigned long ino_t;
|
|
#else
|
|
typedef unsigned short ino_t;
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __MS_types__
|
|
typedef unsigned long vm_offset_t;
|
|
typedef unsigned long vm_size_t;
|
|
|
|
#define __BIT_TYPES_DEFINED__
|
|
|
|
typedef char int8_t;
|
|
typedef unsigned char u_int8_t;
|
|
typedef short int16_t;
|
|
typedef unsigned short u_int16_t;
|
|
typedef int int32_t;
|
|
typedef unsigned int u_int32_t;
|
|
typedef long long int64_t;
|
|
typedef unsigned long long u_int64_t;
|
|
typedef int32_t register_t;
|
|
#endif /* __MS_types__ */
|
|
|
|
/*
|
|
* All these should be machine specific - right now they are all broken.
|
|
* However, for all of Cygnus' embedded targets, we want them to all be
|
|
* the same. Otherwise things like sizeof (struct stat) might depend on
|
|
* how the file was compiled (e.g. -mint16 vs -mint32, etc.).
|
|
*/
|
|
|
|
typedef short dev_t;
|
|
|
|
typedef long off_t;
|
|
|
|
typedef unsigned short uid_t;
|
|
typedef unsigned short gid_t;
|
|
typedef int pid_t;
|
|
typedef long key_t;
|
|
typedef long ssize_t;
|
|
|
|
#ifdef __MS_types__
|
|
typedef char * addr_t;
|
|
typedef int mode_t;
|
|
#else
|
|
#if defined (__sparc__) && !defined (__sparc_v9__)
|
|
#ifdef __svr4__
|
|
typedef unsigned long mode_t;
|
|
#else
|
|
typedef unsigned short mode_t;
|
|
#endif
|
|
#else
|
|
typedef unsigned int mode_t _ST_INT32;
|
|
#endif
|
|
#endif /* ! __MS_types__ */
|
|
|
|
typedef unsigned short nlink_t;
|
|
|
|
/* We don't define fd_set and friends if we are compiling POSIX
|
|
source, or if we have included the Windows Sockets.h header (which
|
|
defines Windows versions of them). Note that a program which
|
|
includes the Windows sockets.h header must know what it is doing;
|
|
it must not call the cygwin32 select function. */
|
|
# if ! defined (_POSIX_SOURCE) && ! defined (_WINSOCK_H)
|
|
|
|
# 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
|
|
|
|
typedef long fd_mask;
|
|
# define NFDBITS (sizeof (fd_mask) * NBBY) /* bits per mask */
|
|
# ifndef howmany
|
|
# define howmany(x,y) (((x)+((y)-1))/(y))
|
|
# endif
|
|
|
|
/* We use a macro for fd_set so that including Sockets.h afterwards
|
|
can work. */
|
|
typedef struct _types_fd_set {
|
|
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
|
|
} _types_fd_set;
|
|
|
|
#define fd_set _types_fd_set
|
|
|
|
# define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
|
|
# define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
|
|
# define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
|
|
# define FD_ZERO(p) bzero((caddr_t)(p), sizeof (*(p)))
|
|
|
|
# endif /* ! defined (_POSIX_SOURCE) && ! defined (_WINSOCK_H) */
|
|
|
|
#undef __MS_types__
|
|
#undef _ST_INT32
|
|
|
|
#endif /* _SYS_TYPES_H */
|