make thread_check_current_buffer return bool
[emacs.git] / src / sysselect.h
blob244f0f7c067a2c54fa55be96574e540b93cb67f2
1 /* sysselect.h - System-dependent definitions for the select function.
2 Copyright (C) 1995, 2001-2013 Free Software Foundation, Inc.
4 This file is part of GNU Emacs.
6 GNU Emacs is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 GNU Emacs is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
19 #ifndef EMACS_SYSSELECT_H
20 #define EMACS_SYSSELECT_H
22 #ifndef DOS_NT
23 #include <sys/select.h>
24 #endif
26 #ifdef WINDOWSNT
28 /* File descriptor set emulation. */
30 /* MSVC runtime library has limit of 64 descriptors by default */
31 #define FD_SETSIZE 64
32 typedef struct {
33 unsigned int bits[FD_SETSIZE / 32];
34 } fd_set;
36 /* standard access macros */
37 #define FD_SET(n, p) \
38 do { \
39 if ((n) < FD_SETSIZE) { \
40 (p)->bits[(n)/32] |= (1 << (n)%32); \
41 } \
42 } while (0)
43 #define FD_CLR(n, p) \
44 do { \
45 if ((n) < FD_SETSIZE) { \
46 (p)->bits[(n)/32] &= ~(1 << (n)%32); \
47 } \
48 } while (0)
49 #define FD_ISSET(n, p) ((n) < FD_SETSIZE ? ((p)->bits[(n)/32] & (1 << (n)%32)) : 0)
50 #define FD_ZERO(p) memset((p), 0, sizeof(fd_set))
52 #define SELECT_TYPE fd_set
54 #include "systime.h"
55 extern int sys_select (int, SELECT_TYPE *, SELECT_TYPE *, SELECT_TYPE *,
56 EMACS_TIME *, sigset_t *);
58 #else /* not WINDOWSNT */
60 #ifdef FD_SET
61 #ifdef FD_SETSIZE
62 #define MAXDESC FD_SETSIZE
63 #else
64 #define MAXDESC 64
65 #endif
66 #define SELECT_TYPE fd_set
67 #else /* no FD_SET */
68 #define MAXDESC 32
69 #define SELECT_TYPE int
71 /* Define the macros to access a single-int bitmap of descriptors. */
72 #define FD_SET(n, p) (*(p) |= (1 << (n)))
73 #define FD_CLR(n, p) (*(p) &= ~(1 << (n)))
74 #define FD_ISSET(n, p) (*(p) & (1 << (n)))
75 #define FD_ZERO(p) (*(p) = 0)
76 #endif /* no FD_SET */
77 #endif /* not WINDOWSNT */
79 #if !defined (HAVE_SELECT)
80 #define select sys_select
81 #endif
83 #ifdef MSDOS
84 #define pselect sys_select
85 #endif
87 #endif /* EMACS_SYSSELECT_H */