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