64 lines
1.5 KiB
C
64 lines
1.5 KiB
C
|
/*
|
||
|
* Public domain
|
||
|
*
|
||
|
* poll(2) emulation for Windows
|
||
|
*
|
||
|
* This emulates just-enough poll functionality on Windows to work in the
|
||
|
* context of the openssl(1) program. This is not a replacement for
|
||
|
* POSIX.1-2001 poll(2).
|
||
|
*
|
||
|
* Dongsheng Song <dongsheng.song@gmail.com>
|
||
|
* Brent Cook <bcook@openbsd.org>
|
||
|
*/
|
||
|
|
||
|
#ifndef LIBCRYPTOCOMPAT_POLL_H
|
||
|
#define LIBCRYPTOCOMPAT_POLL_H
|
||
|
|
||
|
#ifndef _WIN32
|
||
|
#include_next <poll.h>
|
||
|
#else
|
||
|
|
||
|
#include <winsock2.h>
|
||
|
|
||
|
/* Type used for the number of file descriptors. */
|
||
|
typedef unsigned long int nfds_t;
|
||
|
|
||
|
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0600)
|
||
|
/* Data structure describing a polling request. */
|
||
|
struct pollfd {
|
||
|
int fd; /* file descriptor */
|
||
|
short events; /* requested events */
|
||
|
short revents; /* returned events */
|
||
|
};
|
||
|
|
||
|
/* Event types that can be polled */
|
||
|
#define POLLIN 0x001 /* There is data to read. */
|
||
|
#define POLLPRI 0x002 /* There is urgent data to read. */
|
||
|
#define POLLOUT 0x004 /* Writing now will not block. */
|
||
|
|
||
|
# define POLLRDNORM 0x040 /* Normal data may be read. */
|
||
|
# define POLLRDBAND 0x080 /* Priority data may be read. */
|
||
|
# define POLLWRNORM 0x100 /* Writing now will not block. */
|
||
|
# define POLLWRBAND 0x200 /* Priority data may be written. */
|
||
|
|
||
|
/* Event types always implicitly polled. */
|
||
|
#define POLLERR 0x008 /* Error condition. */
|
||
|
#define POLLHUP 0x010 /* Hung up. */
|
||
|
#define POLLNVAL 0x020 /* Invalid polling request. */
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
int poll(struct pollfd *pfds, nfds_t nfds, int timeout);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* HAVE_POLL */
|
||
|
|
||
|
#endif /* LIBCRYPTOCOMPAT_POLL_H */
|