ffe2311f97d3a121b4e717b349dbf33239f41bc8
[oweals/musl.git] / include / sys / epoll.h
1 #ifndef _SYS_EPOLL_H
2 #define _SYS_EPOLL_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #include <stdint.h>
9 #include <sys/types.h>
10 #include <fcntl.h>
11
12 #define __NEED_sigset_t
13
14 #include <bits/alltypes.h>
15
16 #define EPOLL_CLOEXEC O_CLOEXEC
17 #define EPOLL_NONBLOCK O_NONBLOCK
18
19 enum EPOLL_EVENTS { __EPOLL_DUMMY };
20 #define EPOLLIN 0x001
21 #define EPOLLPRI 0x002
22 #define EPOLLOUT 0x004
23 #define EPOLLRDNORM 0x040
24 #define EPOLLRDBAND 0x080
25 #define EPOLLWRNORM 0x100
26 #define EPOLLWRBAND 0x200
27 #define EPOLLMSG 0x400
28 #define EPOLLERR 0x008
29 #define EPOLLHUP 0x010
30 #define EPOLLRDHUP 0x2000
31 #define EPOLLEXCLUSIVE (1U<<28)
32 #define EPOLLWAKEUP (1U<<29)
33 #define EPOLLONESHOT (1U<<30)
34 #define EPOLLET (1U<<31)
35
36 #define EPOLL_CTL_ADD 1
37 #define EPOLL_CTL_DEL 2
38 #define EPOLL_CTL_MOD 3
39
40 typedef union epoll_data {
41         void *ptr;
42         int fd;
43         uint32_t u32;
44         uint64_t u64;
45 } epoll_data_t;
46
47 struct epoll_event {
48         uint32_t events;
49         epoll_data_t data;
50 }
51 #ifdef __x86_64__
52 __attribute__ ((__packed__))
53 #endif
54 ;
55
56
57 int epoll_create(int);
58 int epoll_create1(int);
59 int epoll_ctl(int, int, int, struct epoll_event *);
60 int epoll_wait(int, struct epoll_event *, int, int);
61 int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *);
62
63
64 #ifdef __cplusplus
65 }
66 #endif
67
68 #endif /* sys/epoll.h */