aboutsummaryrefslogtreecommitdiff
path: root/include/poll.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/poll.h')
-rw-r--r--include/poll.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/include/poll.h b/include/poll.h
new file mode 100644
index 0000000..37f32cd
--- /dev/null
+++ b/include/poll.h
@@ -0,0 +1,56 @@
1/*
2 * poll(2) emulation for Windows
3 * Public domain
4 * from Dongsheng Song <dongsheng.song@gmail.com>
5 */
6
7#ifndef LIBCRYPTOCOMPAT_POLL_H
8#define LIBCRYPTOCOMPAT_POLL_H
9
10#ifdef HAVE_POLL
11#include_next <poll.h>
12#else
13
14#include <winsock2.h>
15
16/* Type used for the number of file descriptors. */
17typedef unsigned long int nfds_t;
18
19#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0600)
20/* Data structure describing a polling request. */
21struct pollfd {
22 int fd; /* file descriptor */
23 short events; /* requested events */
24 short revents; /* returned events */
25};
26
27/* Event types that can be polled */
28#define POLLIN 0x001 /* There is data to read. */
29#define POLLPRI 0x002 /* There is urgent data to read. */
30#define POLLOUT 0x004 /* Writing now will not block. */
31
32# define POLLRDNORM 0x040 /* Normal data may be read. */
33# define POLLRDBAND 0x080 /* Priority data may be read. */
34# define POLLWRNORM 0x100 /* Writing now will not block. */
35# define POLLWRBAND 0x200 /* Priority data may be written. */
36
37/* Event types always implicitly polled. */
38#define POLLERR 0x008 /* Error condition. */
39#define POLLHUP 0x010 /* Hung up. */
40#define POLLNVAL 0x020 /* Invalid polling request. */
41
42#endif
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48int poll(struct pollfd *pfds, nfds_t nfds, int timeout);
49
50#ifdef __cplusplus
51}
52#endif
53
54#endif /* HAVE_POLL */
55
56#endif /* LIBCRYPTOCOMPAT_POLL_H */