#ifndef _SYS_EPOLL_H_
#define _SYS_EPOLL_H_
#include <sys/fcntl.h>
#include <sys/featuretest.h>
#include <sys/sigtypes.h>
#include <sys/types.h>
struct timespec;
#define EPOLL_CLOEXEC O_CLOEXEC
#define EPOLLIN 0x00000001
#define EPOLLPRI 0x00000002
#define EPOLLOUT 0x00000004
#define EPOLLERR 0x00000008
#define EPOLLHUP 0x00000010
#define EPOLLRDNORM 0x00000040
#define EPOLLRDBAND 0x00000080
#define EPOLLWRNORM 0x00000100
#define EPOLLWRBAND 0x00000200
#define EPOLLMSG 0x00000400
#define EPOLLRDHUP 0x00002000
#define EPOLLWAKEUP 0x20000000
#define EPOLLONESHOT 0x40000000
#define EPOLLET 0x80000000
#define EPOLL_CTL_ADD 1
#define EPOLL_CTL_DEL 2
#define EPOLL_CTL_MOD 3
#ifdef _KERNEL
#define EPOLL_MAX_EVENTS (4 * 1024 * 1024)
typedef uint64_t epoll_data_t;
#else
union epoll_data {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
};
typedef union epoll_data epoll_data_t;
#endif
struct epoll_event {
uint32_t events;
epoll_data_t data;
};
#ifdef _KERNEL
int epoll_ctl_common(struct lwp *l, register_t *retval, int epfd, int op,
int fd, struct epoll_event *event);
int epoll_wait_common(struct lwp *l, register_t *retval, int epfd,
struct epoll_event *events, int maxevents, struct timespec *tsp,
const sigset_t *nss);
#else
__BEGIN_DECLS
#ifdef _NETBSD_SOURCE
int epoll_create(int size);
int epoll_create1(int flags);
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
int epoll_wait(int epfd, struct epoll_event *events, int maxevents,
int timeout);
int epoll_pwait(int epfd, struct epoll_event *events, int maxevents,
int timeout, const sigset_t *sigmask);
int epoll_pwait2(int epfd, struct epoll_event *events, int maxevents,
const struct timespec *timeout, const sigset_t *sigmask);
#endif
__END_DECLS
#endif
#endif