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