diff --git a/sys/compat/linux/linux_event.c b/sys/compat/linux/linux_event.c index 816c68a90f1..e88791659f1 100644 --- a/sys/compat/linux/linux_event.c +++ b/sys/compat/linux/linux_event.c @@ -611,13 +611,18 @@ int linux_timerfd_create(struct thread *td, struct linux_timerfd_create_args *args) { clockid_t clockid; - int error; + int error, flags; error = linux_to_native_clockid(&clockid, args->clockid); if (error != 0) return (error); + flags = 0; + if ((args->flags & LINUX_TFD_CLOEXEC) != 0) + flags |= O_CLOEXEC; + if ((args->flags & LINUX_TFD_NONBLOCK) != 0) + flags |= TFD_NONBLOCK; - return (kern_timerfd_create(td, clockid, args->flags)); + return (kern_timerfd_create(td, clockid, flags)); } int diff --git a/sys/compat/linux/linux_event.h b/sys/compat/linux/linux_event.h index fa63371b517..8c6758fefcc 100644 --- a/sys/compat/linux/linux_event.h +++ b/sys/compat/linux/linux_event.h @@ -54,4 +54,7 @@ #define LINUX_EFD_SEMAPHORE (1 << 0) +#define LINUX_TFD_CLOEXEC LINUX_O_CLOEXEC +#define LINUX_TFD_NONBLOCK LINUX_O_NONBLOCK + #endif /* !_LINUX_EVENT_H_ */