source: trunk/libs/newlib/src/newlib/libc/include/sys/select.h @ 444

Last change on this file since 444 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 2.6 KB
Line 
1/* select.h
2   Copyright 1998, 1999, 2000, 2001, 2005, 2009 Red Hat, Inc.
3
4   Written by Geoffrey Noer <noer@cygnus.com>
5
6This file is part of Cygwin.
7
8This software is a copyrighted work licensed under the terms of the
9Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
10details. */
11
12#ifndef _SYS_SELECT_H
13#define _SYS_SELECT_H
14
15/* We don't define fd_set and friends if we are compiling POSIX
16   source, or if we have included (or may include as indicated
17   by __USE_W32_SOCKETS) the W32api winsock[2].h header which
18   defines Windows versions of them.   Note that a program which
19   includes the W32api winsock[2].h header must know what it is doing;
20   it must not call the Cygwin select function.
21*/
22# if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS))
23
24#include <sys/cdefs.h>
25#include <sys/_sigset.h>
26#include <sys/_timeval.h>
27#include <sys/timespec.h>
28
29#if !defined(_SIGSET_T_DECLARED)
30#define _SIGSET_T_DECLARED
31typedef __sigset_t      sigset_t;
32#endif
33
34#  define _SYS_TYPES_FD_SET
35/*
36 * Select uses bit masks of file descriptors in longs.
37 * These macros manipulate such bit fields (the filesystem macros use chars).
38 * FD_SETSIZE may be defined by the user, but the default here
39 * should be >= NOFILE (param.h).
40 */
41#  ifndef       FD_SETSIZE
42#       define  FD_SETSIZE      64
43#  endif
44
45typedef unsigned long   fd_mask;
46#  define       NFDBITS (sizeof (fd_mask) * 8)  /* bits per mask */
47#  ifndef       _howmany
48#       define  _howmany(x,y)   (((x)+((y)-1))/(y))
49#  endif
50
51/* We use a macro for fd_set so that including Sockets.h afterwards
52   can work.  */
53typedef struct _types_fd_set {
54        fd_mask fds_bits[_howmany(FD_SETSIZE, NFDBITS)];
55} _types_fd_set;
56
57#define fd_set _types_fd_set
58
59#  define       FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
60#  define       FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
61#  define       FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
62#  define       FD_ZERO(p)      (__extension__ (void)({ \
63     size_t __i; \
64     char *__tmp = (char *)p; \
65     for (__i = 0; __i < sizeof (*(p)); ++__i) \
66       *__tmp++ = 0; \
67}))
68
69#if !defined (__INSIDE_CYGWIN_NET__)
70
71__BEGIN_DECLS
72
73int select __P ((int __n, fd_set *__readfds, fd_set *__writefds,
74                 fd_set *__exceptfds, struct timeval *__timeout));
75#if __POSIX_VISIBLE >= 200112
76int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds,
77                  fd_set *__exceptfds, const struct timespec *__timeout,
78                  const sigset_t *__set));
79#endif
80
81__END_DECLS
82
83#endif /* !__INSIDE_CYGWIN_NET__ */
84
85#endif /* !(_WINSOCK_H || _WINSOCKAPI_ || __USE_W32_SOCKETS) */
86
87#endif /* sys/select.h */
Note: See TracBrowser for help on using the repository browser.