Merge from trunk
[bpt/emacs.git] / src / sysselect.h
CommitLineData
3ef31cb5 1/* sysselect.h - System-dependent definitions for the select function.
429ab54e 2 Copyright (C) 1995, 2001, 2002, 2003, 2004, 2005,
114f9c96 3 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
3ef31cb5
KH
4
5This file is part of GNU Emacs.
6
b9b1cc14 7GNU Emacs is free software: you can redistribute it and/or modify
3ef31cb5 8it under the terms of the GNU General Public License as published by
b9b1cc14
GM
9the Free Software Foundation, either version 3 of the License, or
10(at your option) any later version.
3ef31cb5
KH
11
12GNU Emacs is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
b9b1cc14 18along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
3ef31cb5 19
c924d3ff 20#ifdef HAVE_SYS_SELECT_H
14145fa3 21#if defined (DARWIN_OS)
75440ed4
YM
22#undef init_process
23#endif
3ef31cb5 24#include <sys/select.h>
14145fa3 25#if defined (DARWIN_OS)
75440ed4
YM
26#define init_process emacs_init_process
27#endif
3ef31cb5
KH
28#endif
29
a583bbef
EZ
30/* The w32 build defines select stuff in w32.h, which is included
31 where w32 needs it, but not where sysselect.h is included. The w32
32 definitions in w32.h are incompatible with the below. */
33#ifndef WINDOWSNT
3ef31cb5
KH
34#ifdef FD_SET
35#ifdef FD_SETSIZE
36#define MAXDESC FD_SETSIZE
37#else
38#define MAXDESC 64
39#endif
40#define SELECT_TYPE fd_set
41#else /* no FD_SET */
42#define MAXDESC 32
43#define SELECT_TYPE int
44
45/* Define the macros to access a single-int bitmap of descriptors. */
46#define FD_SET(n, p) (*(p) |= (1 << (n)))
47#define FD_CLR(n, p) (*(p) &= ~(1 << (n)))
48#define FD_ISSET(n, p) (*(p) & (1 << (n)))
49#define FD_ZERO(p) (*(p) = 0)
50#endif /* no FD_SET */
a583bbef 51#endif /* not WINDOWSNT */
3ef31cb5 52
4624371d 53#if !defined (HAVE_SELECT)
3ef31cb5
KH
54#define select sys_select
55#endif
ab5796a9
MB
56
57/* arch-tag: 36d05500-8cf6-4847-8e78-6721f18c06ef
58 (do not change this comment) */