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