From ea9daca70876b5680d1155aed1015cb3d9ec7e30 Mon Sep 17 00:00:00 2001 From: dchagin Date: Sat, 9 Jan 2016 16:44:17 +0000 Subject: MFC r283441: Implement epoll family system calls. This is a tiny wrapper around kqueue() to implement epoll subset of functionality. The kqueue user data are 32bit on i386 which is not enough for epoll user data, so we keep user data in the proc emuldata. Initial patch developed by rdivacky@ in 2007, then extended by Yuri Victorovich @ r255672 and finished by me in collaboration with mjg@ and jillies@. --- sys/amd64/linux/linux_dummy.c | 4 ---- sys/amd64/linux/syscalls.master | 13 ++++++++----- 2 files changed, 8 insertions(+), 9 deletions(-) (limited to 'sys/amd64/linux') diff --git a/sys/amd64/linux/linux_dummy.c b/sys/amd64/linux/linux_dummy.c index 4e85bec..b2c175b 100644 --- a/sys/amd64/linux/linux_dummy.c +++ b/sys/amd64/linux/linux_dummy.c @@ -69,13 +69,10 @@ DUMMY(tuxcall); DUMMY(security); DUMMY(set_thread_area); DUMMY(lookup_dcookie); -DUMMY(epoll_create); DUMMY(epoll_ctl_old); DUMMY(epoll_wait_old); DUMMY(remap_file_pages); DUMMY(semtimedop); -DUMMY(epoll_ctl); -DUMMY(epoll_wait); DUMMY(mbind); DUMMY(get_mempolicy); DUMMY(set_mempolicy); @@ -112,7 +109,6 @@ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); -DUMMY(epoll_create1); DUMMY(inotify_init1); DUMMY(preadv); DUMMY(pwritev); diff --git a/sys/amd64/linux/syscalls.master b/sys/amd64/linux/syscalls.master index 4bdf287..b5d0bdc 100644 --- a/sys/amd64/linux/syscalls.master +++ b/sys/amd64/linux/syscalls.master @@ -373,7 +373,7 @@ 210 AUE_NULL UNIMPL linux_io_cancel 211 AUE_NULL UNIMPL linux_get_thread_area 212 AUE_NULL STD { int linux_lookup_dcookie(void); } -213 AUE_NULL STD { int linux_epoll_create(void); } +213 AUE_NULL STD { int linux_epoll_create(l_int size); } 214 AUE_NULL STD { int linux_epoll_ctl_old(void); } 215 AUE_NULL STD { int linux_epoll_wait_old(void); } 216 AUE_NULL STD { int linux_remap_file_pages(void); } @@ -397,8 +397,10 @@ 230 AUE_NULL STD { int linux_clock_nanosleep(clockid_t which, int flags, \ struct l_timespec *rqtp, struct l_timespec *rmtp); } 231 AUE_EXIT STD { int linux_exit_group(int error_code); } -232 AUE_NULL STD { int linux_epoll_wait(void); } -233 AUE_NULL STD { int linux_epoll_ctl(void); } +232 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout); } +233 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ + struct epoll_event *event); } 234 AUE_NULL STD { int linux_tgkill(int tgid, int pid, int sig); } 235 AUE_UTIMES STD { int linux_utimes(char *fname, \ struct l_timeval *tptr); } @@ -466,7 +468,8 @@ 278 AUE_NULL STD { int linux_vmsplice(void); } 279 AUE_NULL STD { int linux_move_pages(void); } 280 AUE_NULL STD { int linux_utimensat(void); } -281 AUE_NULL STD { int linux_epoll_pwait(void); } +281 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout, l_sigset_t *mask); } 282 AUE_NULL STD { int linux_signalfd(void); } 283 AUE_NULL STD { int linux_timerfd(void); } 284 AUE_NULL STD { int linux_eventfd(void); } @@ -477,7 +480,7 @@ l_uintptr_t namelen, int flags); } 289 AUE_NULL STD { int linux_signalfd4(void); } 290 AUE_NULL STD { int linux_eventfd2(void); } -291 AUE_NULL STD { int linux_epoll_create1(void); } +291 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 292 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } 293 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } -- cgit v1.1