Subversion Repositories Kolibri OS

Rev

Rev 6099 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6099 serge 1
/* select.h
2
   Copyright 1998, 1999, 2000, 2001, 2005, 2009 Red Hat, Inc.
3
 
4
   Written by Geoffrey Noer 
5
 
6
This file is part of Cygwin.
7
 
8
This software is a copyrighted work licensed under the terms of the
9
Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
10
details. */
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
*/
6536 serge 22
# if !(defined (_WINSOCK_H) || defined (_WINSOCKAPI_) || defined (__USE_W32_SOCKETS))
6099 serge 23
 
24
#include 
25
#include 
26
#include 
27
#include 
28
 
29
#if !defined(_SIGSET_T_DECLARED)
30
#define	_SIGSET_T_DECLARED
31
typedef	__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
 
45
typedef	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.  */
53
typedef	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
 
73
int select __P ((int __n, fd_set *__readfds, fd_set *__writefds,
74
		 fd_set *__exceptfds, struct timeval *__timeout));
6536 serge 75
#if __POSIX_VISIBLE >= 200112
6099 serge 76
int pselect __P ((int __n, fd_set *__readfds, fd_set *__writefds,
77
		  fd_set *__exceptfds, const struct timespec *__timeout,
78
		  const sigset_t *__set));
6536 serge 79
#endif
6099 serge 80
 
81
__END_DECLS
82
 
6536 serge 83
#endif /* !__INSIDE_CYGWIN_NET__ */
6099 serge 84
 
6536 serge 85
#endif /* !(_WINSOCK_H || _WINSOCKAPI_ || __USE_W32_SOCKETS) */
6099 serge 86
 
87
#endif /* sys/select.h */