summaryrefslogtreecommitdiff
path: root/lib/poll.in.h
blob: 75ca21f4cc033c3ba91b722f62a6a7ce74723580 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* Header for poll(2) emulation
   Contributed by Paolo Bonzini.

   Copyright 2001-2003, 2007, 2009-2023 Free Software Foundation, Inc.

   This file is part of gnulib.

   This file is free software: you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1 of the
   License, or (at your option) any later version.

   This file is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public License
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */

#ifndef _@GUARD_PREFIX@_POLL_H

#if __GNUC__ >= 3
@PRAGMA_SYSTEM_HEADER@
#endif
@PRAGMA_COLUMNS@

/* The include_next requires a split double-inclusion guard.  */
#if @HAVE_POLL_H@
# @INCLUDE_NEXT@ @NEXT_POLL_H@
#endif

#ifndef _@GUARD_PREFIX@_POLL_H
#define _@GUARD_PREFIX@_POLL_H

/* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*.  */
#if !_GL_CONFIG_H_INCLUDED
 #error "Please include config.h first."
#endif

/* On native Windows, get the 'struct pollfd' type and the POLL* macro
   definitions before we override them.  mingw defines them in <winsock2.h>
   if _WIN32_WINNT >= 0x0600.  */
#if @HAVE_WINSOCK2_H@
# include <winsock2.h>
#endif


/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */

/* The definition of _GL_WARN_ON_USE is copied here.  */


#if !@HAVE_POLL_H@

# if @HAVE_WINSOCK2_H@
/* Override the definitions from <winsock2.h>.  */
#  undef POLLIN
#  undef POLLPRI
#  undef POLLOUT
#  undef POLLERR
#  undef POLLHUP
#  undef POLLNVAL
#  undef POLLRDNORM
#  undef POLLRDBAND
#  undef POLLWRNORM
#  undef POLLWRBAND
#  define pollfd rpl_pollfd
# endif

/* fake a poll(2) environment */
# define POLLIN      0x0001      /* any readable data available   */
# define POLLPRI     0x0002      /* OOB/Urgent readable data      */
# define POLLOUT     0x0004      /* file descriptor is writable   */
# define POLLERR     0x0008      /* some poll error occurred      */
# define POLLHUP     0x0010      /* file descriptor was "hung up" */
# define POLLNVAL    0x0020      /* requested events "invalid"    */
# define POLLRDNORM  0x0040
# define POLLRDBAND  0x0080
# define POLLWRNORM  0x0100
# define POLLWRBAND  0x0200

# if !GNULIB_defined_poll_types

struct pollfd
{
  int fd;                       /* which file descriptor to poll */
  short events;                 /* events we are interested in   */
  short revents;                /* events found on return        */
};

typedef unsigned long nfds_t;

#  define GNULIB_defined_poll_types 1
# endif

/* Define INFTIM only if doing so conforms to POSIX.  */
# if !defined (_POSIX_C_SOURCE) && !defined (_XOPEN_SOURCE)
#  define INFTIM (-1)
# endif

#endif


#if @GNULIB_POLL@
# if @REPLACE_POLL@
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
#   undef poll
#   define poll rpl_poll
#  endif
_GL_FUNCDECL_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout));
_GL_CXXALIAS_RPL (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout));
# else
#  if !@HAVE_POLL@
_GL_FUNCDECL_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout));
#  endif
_GL_CXXALIAS_SYS (poll, int, (struct pollfd *pfd, nfds_t nfd, int timeout));
# endif
_GL_CXXALIASWARN (poll);
#elif defined GNULIB_POSIXCHECK
# undef poll
# if HAVE_RAW_DECL_POLL
_GL_WARN_ON_USE (poll, "poll is unportable - "
                 "use gnulib module poll for portability");
# endif
#endif


#endif /* _@GUARD_PREFIX@_POLL_H */
#endif /* _@GUARD_PREFIX@_POLL_H */