xref: /openbsd-src/gnu/usr.bin/perl/dist/IO/poll.h (revision e068048151d29f2562a32185e21a8ba885482260)
1 /*
2  * poll.h
3  *
4  * Copyright (c) 1997-8 Graham Barr <gbarr@pobox.com>. All rights reserved.
5  * This program is free software; you can redistribute it and/or
6  * modify it under the same terms as Perl itself.
7  *
8  */
9 
10 #ifndef POLL_H
11 #  define POLL_H
12 
13 #if (defined(HAS_POLL) && defined(I_POLL)) || (defined(POLLWRBAND) && !defined(_WIN32))
14 #  include <poll.h>
15 #elif (defined(HAS_POLL) && defined(I_SYS_POLL))
16 #  include <sys/poll.h>
17 #else
18 #ifdef HAS_SELECT
19 
20 
21 /* We shall emulate poll using select */
22 
23 #define EMULATE_POLL_WITH_SELECT
24 
25 #ifdef _WIN32
26 #  include <winsock2.h>
27 #endif
28 
29 #ifdef poll
30 # undef poll
31 #endif
32 #define poll Perl_my_poll
33 
34 #if WINVER < 0x0600
35 typedef struct pollfd {
36     int fd;
37     short events;
38     short revents;
39 } pollfd_t;
40 
41 #define POLLIN          0x0001
42 #define POLLPRI         0x0002
43 #define POLLOUT         0x0004
44 #define POLLRDNORM      0x0040
45 #define POLLWRNORM      POLLOUT
46 #define POLLRDBAND      0x0080
47 #define POLLWRBAND      0x0100
48 #define POLLNORM        POLLRDNORM
49 
50 /* Return ONLY events (NON testable) */
51 
52 #define POLLERR         0x0008
53 #define POLLHUP         0x0010
54 #define POLLNVAL        0x0020
55 
56 #endif
57 
58 int poll (struct pollfd *, unsigned long, int);
59 
60 #ifndef HAS_POLL
61 #  define HAS_POLL
62 #endif
63 
64 #endif /* HAS_SELECT */
65 
66 #endif /* I_POLL */
67 
68 #endif /* POLL_H */
69 
70