Page MenuHomeFreeBSD

D1094.diff
No OneTemporary

D1094.diff

Index: sys/amd64/linux/linux_dummy.c
===================================================================
--- sys/amd64/linux/linux_dummy.c
+++ sys/amd64/linux/linux_dummy.c
@@ -103,12 +103,10 @@
DUMMY(epoll_pwait);
DUMMY(signalfd);
DUMMY(timerfd);
-DUMMY(eventfd);
DUMMY(fallocate);
DUMMY(timerfd_settime);
DUMMY(timerfd_gettime);
DUMMY(signalfd4);
-DUMMY(eventfd2);
DUMMY(inotify_init1);
DUMMY(preadv);
DUMMY(pwritev);
Index: sys/amd64/linux/syscalls.master
===================================================================
--- sys/amd64/linux/syscalls.master
+++ sys/amd64/linux/syscalls.master
@@ -472,14 +472,14 @@
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); }
+284 AUE_NULL STD { int linux_eventfd(l_uint initval); }
285 AUE_NULL STD { int linux_fallocate(void); }
286 AUE_NULL STD { int linux_timerfd_settime(void); }
287 AUE_NULL STD { int linux_timerfd_gettime(void); }
288 AUE_ACCEPT STD { int linux_accept4(l_int s, l_uintptr_t addr, \
l_uintptr_t namelen, int flags); }
289 AUE_NULL STD { int linux_signalfd4(void); }
-290 AUE_NULL STD { int linux_eventfd2(void); }
+290 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); }
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); }
Index: sys/amd64/linux32/linux32_dummy.c
===================================================================
--- sys/amd64/linux32/linux32_dummy.c
+++ sys/amd64/linux32/linux32_dummy.c
@@ -108,7 +108,6 @@
DUMMY(utimensat);
DUMMY(signalfd);
DUMMY(timerfd_create);
-DUMMY(eventfd);
/* linux 2.6.23: */
DUMMY(fallocate);
/* linux 2.6.25: */
@@ -116,7 +115,6 @@
DUMMY(timerfd_gettime);
/* linux 2.6.27: */
DUMMY(signalfd4);
-DUMMY(eventfd2);
DUMMY(inotify_init1);
/* linux 2.6.30: */
DUMMY(preadv);
Index: sys/amd64/linux32/syscalls.master
===================================================================
--- sys/amd64/linux32/syscalls.master
+++ sys/amd64/linux32/syscalls.master
@@ -535,7 +535,7 @@
320 AUE_NULL STD { int linux_utimensat(void); }
321 AUE_NULL STD { int linux_signalfd(void); }
322 AUE_NULL STD { int linux_timerfd_create(void); }
-323 AUE_NULL STD { int linux_eventfd(void); }
+323 AUE_NULL STD { int linux_eventfd(l_uint initval); }
; linux 2.6.23:
324 AUE_NULL STD { int linux_fallocate(void); }
; linux 2.6.25:
@@ -543,7 +543,7 @@
326 AUE_NULL STD { int linux_timerfd_gettime(void); }
; linux 2.6.27:
327 AUE_NULL STD { int linux_signalfd4(void); }
-328 AUE_NULL STD { int linux_eventfd2(void); }
+328 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); }
329 AUE_NULL STD { int linux_epoll_create1(l_int flags); }
330 AUE_NULL STD { int linux_dup3(l_int oldfd, \
l_int newfd, l_int flags); }
Index: sys/compat/linux/linux_event.h
===================================================================
--- sys/compat/linux/linux_event.h
+++ sys/compat/linux/linux_event.h
@@ -55,4 +55,8 @@
#define LINUX_EPOLL_CTL_DEL 2
#define LINUX_EPOLL_CTL_MOD 3
+#define LINUX_EFD_SEMAPHORE (1 << 0)
+#define LINUX_EFD_FLAGS (LINUX_EFD_SEMAPHORE|LINUX_O_CLOEXEC \
+ |LINUX_O_NONBLOCK)
+
#endif /* !_LINUX_EVENT_H_ */
Index: sys/compat/linux/linux_event.c
===================================================================
--- sys/compat/linux/linux_event.c
+++ sys/compat/linux/linux_event.c
@@ -43,9 +43,13 @@
#include <sys/filedesc.h>
#include <sys/errno.h>
#include <sys/event.h>
+#include <sys/eventfd.h>
+#include <sys/poll.h>
#include <sys/proc.h>
+#include <sys/selinfo.h>
#include <sys/sx.h>
#include <sys/syscallsubr.h>
+#include <sys/sysproto.h>
#include <sys/timespec.h>
#ifdef COMPAT_LINUX32
@@ -57,8 +61,8 @@
#endif
#include <compat/linux/linux_emul.h>
-#include <compat/linux/linux_event.h>
#include <compat/linux/linux_file.h>
+#include <compat/linux/linux_event.h>
#include <compat/linux/linux_util.h>
/*
@@ -498,3 +502,33 @@
/* report any errors we got */
return (error1 == 0 ? error2 : error1);
}
+
+int
+linux_eventfd(struct thread *td, struct linux_eventfd_args *args)
+{
+ struct eventfd_args bsd_args;
+
+ bsd_args.initval = args->initval;
+ bsd_args.flags = 0;
+ return (sys_eventfd(td, &bsd_args));
+}
+
+int
+linux_eventfd2(struct thread *td, struct linux_eventfd2_args *args)
+{
+ struct eventfd_args bsd_args;
+
+ if ((args->flags & ~(LINUX_EFD_FLAGS)) != 0)
+ return (EINVAL);
+
+ bsd_args.flags = 0;
+ if (args->flags & LINUX_O_CLOEXEC)
+ bsd_args.flags |= EFD_CLOEXEC;
+ if (args->flags & LINUX_O_NONBLOCK)
+ bsd_args.flags |= EFD_NONBLOCK;
+ if (args->flags & LINUX_EFD_SEMAPHORE)
+ bsd_args.flags |= EFD_SEMAPHORE;
+ bsd_args.initval = args->initval;
+
+ return (sys_eventfd(td, &bsd_args));
+}
Index: sys/i386/linux/linux_dummy.c
===================================================================
--- sys/i386/linux/linux_dummy.c
+++ sys/i386/linux/linux_dummy.c
@@ -104,7 +104,6 @@
DUMMY(utimensat);
DUMMY(signalfd);
DUMMY(timerfd_create);
-DUMMY(eventfd);
/* linux 2.6.23: */
DUMMY(fallocate);
/* linux 2.6.25: */
@@ -112,7 +111,6 @@
DUMMY(timerfd_gettime);
/* linux 2.6.27: */
DUMMY(signalfd4);
-DUMMY(eventfd2);
DUMMY(inotify_init1);
/* linux 2.6.30: */
DUMMY(preadv);
Index: sys/i386/linux/syscalls.master
===================================================================
--- sys/i386/linux/syscalls.master
+++ sys/i386/linux/syscalls.master
@@ -543,7 +543,7 @@
320 AUE_NULL STD { int linux_utimensat(void); }
321 AUE_NULL STD { int linux_signalfd(void); }
322 AUE_NULL STD { int linux_timerfd_create(void); }
-323 AUE_NULL STD { int linux_eventfd(void); }
+323 AUE_NULL STD { int linux_eventfd(l_uint initval); }
; linux 2.6.23:
324 AUE_NULL STD { int linux_fallocate(void); }
; linux 2.6.25:
@@ -551,7 +551,7 @@
326 AUE_NULL STD { int linux_timerfd_gettime(void); }
; linux 2.6.27:
327 AUE_NULL STD { int linux_signalfd4(void); }
-328 AUE_NULL STD { int linux_eventfd2(void); }
+328 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); }
329 AUE_NULL STD { int linux_epoll_create1(l_int flags); }
330 AUE_NULL STD { int linux_dup3(l_int oldfd, \
l_int newfd, l_int flags); }

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 12, 4:34 AM (21 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15761180
Default Alt Text
D1094.diff (6 KB)

Event Timeline