summaryrefslogtreecommitdiffstats
path: root/sys/amd64/linux
diff options
context:
space:
mode:
authordchagin <dchagin@FreeBSD.org>2016-01-09 16:44:17 +0000
committerdchagin <dchagin@FreeBSD.org>2016-01-09 16:44:17 +0000
commitea9daca70876b5680d1155aed1015cb3d9ec7e30 (patch)
tree3c98568eb8ce62179e17f97a8a74b16c4b9b15ad /sys/amd64/linux
parentb6688c70e9ec109f6468205ab8e4bf8a760871f8 (diff)
downloadFreeBSD-src-ea9daca70876b5680d1155aed1015cb3d9ec7e30.zip
FreeBSD-src-ea9daca70876b5680d1155aed1015cb3d9ec7e30.tar.gz
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@.
Diffstat (limited to 'sys/amd64/linux')
-rw-r--r--sys/amd64/linux/linux_dummy.c4
-rw-r--r--sys/amd64/linux/syscalls.master13
2 files changed, 8 insertions, 9 deletions
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); }
OpenPOWER on IntegriCloud