0,0 → 1,86 |
/* select.h |
Copyright 1998, 1999, 2000, 2001, 2005, 2009 Red Hat, Inc. |
|
Written by Geoffrey Noer <noer@cygnus.com> |
|
This file is part of Cygwin. |
|
This software is a copyrighted work licensed under the terms of the |
Cygwin license. Please consult the file "CYGWIN_LICENSE" for |
details. */ |
|
#ifndef _SYS_SELECT_H |
#define _SYS_SELECT_H |
|
/* We don't define fd_set and friends if we are compiling POSIX |
source, or if we have included (or may include as indicated |
by __USE_W32_SOCKETS) the W32api winsock[2].h header which |
defines Windows versions of them. Note that a program which |
includes the W32api winsock[2].h header must know what it is doing; |
it must not call the Cygwin select function. |
*/ |
# if !(defined (_POSIX_SOURCE) || defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS)) |
|
#include <sys/cdefs.h> |
|
#include <sys/_sigset.h> |
#include <sys/_timeval.h> |
#include <sys/timespec.h> |
|
#if !defined(_SIGSET_T_DECLARED) |
#define _SIGSET_T_DECLARED |
typedef __sigset_t sigset_t; |
#endif |
|
# define _SYS_TYPES_FD_SET |
/* |
* 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 unsigned long fd_mask; |
# define NFDBITS (sizeof (fd_mask) * 8) /* 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) (__extension__ (void)({ \ |
size_t __i; \ |
char *__tmp = (char *)p; \ |
for (__i = 0; __i < sizeof (*(p)); ++__i) \ |
*__tmp++ = 0; \ |
})) |
|
#if !defined (__INSIDE_CYGWIN_NET__) |
|
__BEGIN_DECLS |
|
int select __P ((int __n, fd_set *__readfds, fd_set *__writefds, |
fd_set *__exceptfds, struct timeval *__timeout)); |
int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds, |
fd_set *__exceptfds, const struct timespec *__timeout, |
const sigset_t *__set)); |
|
__END_DECLS |
|
#endif |
|
#endif /* !_POSIX_SOURCE, !__INSIDE_CYGWIN_NET__ */ |
|
#endif /* sys/select.h */ |