PR/9901: mycroft: make select guts partially visible for X/Open 5.

This commit is contained in:
christos 2000-04-16 23:12:13 +00:00
parent 470504f184
commit 18e39b7462
1 changed files with 41 additions and 15 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: types.h,v 1.42 1999/12/30 15:51:35 eeh Exp $ */
/* $NetBSD: types.h,v 1.43 2000/04/16 23:12:13 christos Exp $ */
/*-
* Copyright (c) 1982, 1986, 1991, 1993, 1994
@ -170,8 +170,23 @@ typedef _BSD_USECONDS_T_ useconds_t;
#undef _BSD_USECONDS_T_
#endif
#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
#define NBBY 8 /* number of bits in a byte */
#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || \
(defined(_XOPEN_SOURCE) && defined(_XOPEN_SOURCE_EXTENDED)) || \
(_XOPEN_SOURCE - 0) >= 500
/*
* Implementation dependent defines, hidden from user space. X/Open does not
* specify them.
*/
#define __NBBY 8 /* number of bits in a byte */
typedef int32_t __fd_mask;
#define __NFDBITS (sizeof(__fd_mask) * __NBBY) /* bits per mask */
#ifndef howmany
#define __howmany(x, y) (((x) + ((y) - 1)) / (y))
#else
#define __howmany(x, y) howmany(x, y)
#endif
/*
* Select uses bit masks of file descriptors in longs. These macros
@ -183,23 +198,34 @@ typedef _BSD_USECONDS_T_ useconds_t;
#define FD_SETSIZE 256
#endif
typedef int32_t fd_mask;
#define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
#ifndef howmany
#define howmany(x, y) (((x) + ((y) - 1)) / (y))
#endif
typedef struct fd_set {
fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
__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_COPY(f, t) (void)memcpy((t), (f), sizeof(*(f)))
#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) (void)memset((p), 0, sizeof(*(p)))
/*
* Expose our internals if we are not required to hide them.
*/
#ifndef _XOPEN_SOURCE
#define NBBY __NBBY
#define fd_mask __fd_mask
#define NFDBITS __NFDBITS
#ifndef howmany
#define howmany(a, b) __howmany(a, b)
#endif
#define FD_COPY(f, t) (void)memcpy((t), (f), sizeof(*(f)))
#endif
#if defined(__STDC__) && defined(_KERNEL)
/*
* Forward structure declarations for function prototypes. We include the