/* * Those constants were found both in glibc and in the Linux kernel. * They are provided here because the epoll() syscall is featured in * some kernels but in not often included in the glibc, so it needs * just a basic definition. */ #include /* epoll_ctl() commands */ #define EPOLL_CTL_ADD 1 #define EPOLL_CTL_DEL 2 #define EPOLL_CTL_MOD 3 /* events types (bit fields) */ #define EPOLLIN 1 #define EPOLLPRI 2 #define EPOLLOUT 4 #define EPOLLERR 8 #define EPOLLHUP 16 #define EPOLLONESHOT (1 << 30) #define EPOLLET (1 << 31) struct epoll_event { uint32_t events; struct { void *ptr; int fd; uint32_t u32; uint64_t u64; } data; }; #if defined(__powerpc__) || defined(__powerpc64__) #define __NR_epoll_create 236 #define __NR_epoll_ctl 237 #define __NR_epoll_wait 238 #elif defined(__sparc__) || defined(__sparc64__) #define __NR_epoll_create 193 #define __NR_epoll_ctl 194 #define __NR_epoll_wait 195 #elif defined(__x86_64__) #define __NR_epoll_create 213 #define __NR_epoll_ctl 214 #define __NR_epoll_wait 215 #elif defined(__alpha__) #define __NR_sys_epoll_create 407 #define __NR_sys_epoll_ctl 408 #define __NR_sys_epoll_wait 409 #elif defined (__i386__) #define __NR_epoll_create 254 #define __NR_epoll_ctl 255 #define __NR_epoll_wait 256 #else #warning unsupported architecture, guessing __NR_epoll_create=254 like x86... #define __NR_epoll_create 254 #define __NR_epoll_ctl 255 #define __NR_epoll_wait 256 #endif _syscall1 (int, epoll_create, int, size); _syscall4 (int, epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event); _syscall4 (int, epoll_wait, int, epfd, struct epoll_event *, events, int, maxevents, int, timeout);