xref: /aosp_15_r20/external/musl/include/sys/epoll.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef	_SYS_EPOLL_H
2*c9945492SAndroid Build Coastguard Worker #define	_SYS_EPOLL_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
5*c9945492SAndroid Build Coastguard Worker extern "C" {
6*c9945492SAndroid Build Coastguard Worker #endif
7*c9945492SAndroid Build Coastguard Worker 
8*c9945492SAndroid Build Coastguard Worker #include <stdint.h>
9*c9945492SAndroid Build Coastguard Worker #include <sys/types.h>
10*c9945492SAndroid Build Coastguard Worker #include <sys/ioctl.h>
11*c9945492SAndroid Build Coastguard Worker #include <fcntl.h>
12*c9945492SAndroid Build Coastguard Worker 
13*c9945492SAndroid Build Coastguard Worker #define __NEED_sigset_t
14*c9945492SAndroid Build Coastguard Worker 
15*c9945492SAndroid Build Coastguard Worker #include <bits/alltypes.h>
16*c9945492SAndroid Build Coastguard Worker 
17*c9945492SAndroid Build Coastguard Worker #define EPOLL_CLOEXEC O_CLOEXEC
18*c9945492SAndroid Build Coastguard Worker #define EPOLL_NONBLOCK O_NONBLOCK
19*c9945492SAndroid Build Coastguard Worker 
20*c9945492SAndroid Build Coastguard Worker enum EPOLL_EVENTS { __EPOLL_DUMMY };
21*c9945492SAndroid Build Coastguard Worker #define EPOLLIN 0x001
22*c9945492SAndroid Build Coastguard Worker #define EPOLLPRI 0x002
23*c9945492SAndroid Build Coastguard Worker #define EPOLLOUT 0x004
24*c9945492SAndroid Build Coastguard Worker #define EPOLLRDNORM 0x040
25*c9945492SAndroid Build Coastguard Worker #define EPOLLNVAL 0x020
26*c9945492SAndroid Build Coastguard Worker #define EPOLLRDBAND 0x080
27*c9945492SAndroid Build Coastguard Worker #define EPOLLWRNORM 0x100
28*c9945492SAndroid Build Coastguard Worker #define EPOLLWRBAND 0x200
29*c9945492SAndroid Build Coastguard Worker #define EPOLLMSG 0x400
30*c9945492SAndroid Build Coastguard Worker #define EPOLLERR 0x008
31*c9945492SAndroid Build Coastguard Worker #define EPOLLHUP 0x010
32*c9945492SAndroid Build Coastguard Worker #define EPOLLRDHUP 0x2000
33*c9945492SAndroid Build Coastguard Worker #define EPOLLEXCLUSIVE (1U<<28)
34*c9945492SAndroid Build Coastguard Worker #define EPOLLWAKEUP (1U<<29)
35*c9945492SAndroid Build Coastguard Worker #define EPOLLONESHOT (1U<<30)
36*c9945492SAndroid Build Coastguard Worker #define EPOLLET (1U<<31)
37*c9945492SAndroid Build Coastguard Worker 
38*c9945492SAndroid Build Coastguard Worker #define EPOLL_CTL_ADD 1
39*c9945492SAndroid Build Coastguard Worker #define EPOLL_CTL_DEL 2
40*c9945492SAndroid Build Coastguard Worker #define EPOLL_CTL_MOD 3
41*c9945492SAndroid Build Coastguard Worker 
42*c9945492SAndroid Build Coastguard Worker typedef union epoll_data {
43*c9945492SAndroid Build Coastguard Worker 	void *ptr;
44*c9945492SAndroid Build Coastguard Worker 	int fd;
45*c9945492SAndroid Build Coastguard Worker 	uint32_t u32;
46*c9945492SAndroid Build Coastguard Worker 	uint64_t u64;
47*c9945492SAndroid Build Coastguard Worker } epoll_data_t;
48*c9945492SAndroid Build Coastguard Worker 
49*c9945492SAndroid Build Coastguard Worker struct epoll_event {
50*c9945492SAndroid Build Coastguard Worker 	uint32_t events;
51*c9945492SAndroid Build Coastguard Worker 	epoll_data_t data;
52*c9945492SAndroid Build Coastguard Worker }
53*c9945492SAndroid Build Coastguard Worker #ifdef __x86_64__
54*c9945492SAndroid Build Coastguard Worker __attribute__ ((__packed__))
55*c9945492SAndroid Build Coastguard Worker #endif
56*c9945492SAndroid Build Coastguard Worker ;
57*c9945492SAndroid Build Coastguard Worker 
58*c9945492SAndroid Build Coastguard Worker struct epoll_params {
59*c9945492SAndroid Build Coastguard Worker 	uint32_t busy_poll_usecs;
60*c9945492SAndroid Build Coastguard Worker 	uint16_t busy_poll_budget;
61*c9945492SAndroid Build Coastguard Worker 	uint8_t prefer_busy_poll;
62*c9945492SAndroid Build Coastguard Worker 
63*c9945492SAndroid Build Coastguard Worker 	uint8_t __pad;
64*c9945492SAndroid Build Coastguard Worker };
65*c9945492SAndroid Build Coastguard Worker 
66*c9945492SAndroid Build Coastguard Worker #define EPOLL_IOC_TYPE 0x8A
67*c9945492SAndroid Build Coastguard Worker #define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
68*c9945492SAndroid Build Coastguard Worker #define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
69*c9945492SAndroid Build Coastguard Worker 
70*c9945492SAndroid Build Coastguard Worker int epoll_create(int);
71*c9945492SAndroid Build Coastguard Worker int epoll_create1(int);
72*c9945492SAndroid Build Coastguard Worker int epoll_ctl(int, int, int, struct epoll_event *);
73*c9945492SAndroid Build Coastguard Worker int epoll_wait(int, struct epoll_event *, int, int);
74*c9945492SAndroid Build Coastguard Worker int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *);
75*c9945492SAndroid Build Coastguard Worker 
76*c9945492SAndroid Build Coastguard Worker 
77*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus
78*c9945492SAndroid Build Coastguard Worker }
79*c9945492SAndroid Build Coastguard Worker #endif
80*c9945492SAndroid Build Coastguard Worker 
81*c9945492SAndroid Build Coastguard Worker #endif /* sys/epoll.h */
82