diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/x86/entry/syscalls/syscall_32.tbl | 1 | ||||
| -rw-r--r-- | arch/x86/entry/syscalls/syscall_64.tbl | 1 | ||||
| -rw-r--r-- | arch/x86/include/asm/uintr.h | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/uintr_fd.c | 9 |
4 files changed, 15 insertions, 0 deletions
diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl index d0e97f1f1173..a1575cd06bac 100644 --- a/arch/x86/entry/syscalls/syscall_32.tbl +++ b/arch/x86/entry/syscalls/syscall_32.tbl @@ -459,3 +459,4 @@ 452 i386 uintr_register_sender sys_uintr_register_sender 453 i386 uintr_unregister_sender sys_uintr_unregister_sender 454 i386 uintr_wait sys_uintr_wait +455 i386 uintr_event sys_uintr_event diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl index 444af44e5947..e3e0b47c40a2 100644 --- a/arch/x86/entry/syscalls/syscall_64.tbl +++ b/arch/x86/entry/syscalls/syscall_64.tbl @@ -376,6 +376,7 @@ 452 common uintr_register_sender sys_uintr_register_sender 453 common uintr_unregister_sender sys_uintr_unregister_sender 454 common uintr_wait sys_uintr_wait +455 common uintr_event sys_uintr_event # # Due to a historical design error, certain syscalls are numbered differently diff --git a/arch/x86/include/asm/uintr.h b/arch/x86/include/asm/uintr.h index a8bb151e4c8f..3e072bec04f2 100644 --- a/arch/x86/include/asm/uintr.h +++ b/arch/x86/include/asm/uintr.h @@ -64,12 +64,16 @@ void switch_uintr_return(void); int uintr_receiver_wait(ktime_t *expires); void uintr_wake_up_process(void); +int do_uintr_event_init(int flag); +void uintr_event_write(void); + #else /* !CONFIG_X86_USER_INTERRUPTS */ static inline void uintr_free(struct task_struct *task) {} static inline void switch_uintr_prepare(struct task_struct *prev) {} static inline void switch_uintr_return(void) {} static inline void uintr_wake_up_process(void) {} +void uintr_event_write(void) {} #endif /* CONFIG_X86_USER_INTERRUPTS */ diff --git a/arch/x86/kernel/uintr_fd.c b/arch/x86/kernel/uintr_fd.c index 8ddc6a7575bf..3287f8028d00 100644 --- a/arch/x86/kernel/uintr_fd.c +++ b/arch/x86/kernel/uintr_fd.c @@ -321,3 +321,12 @@ SYSCALL_DEFINE2(uintr_wait, u64, usec, unsigned int, flags) expires = usec * NSEC_PER_USEC; return uintr_receiver_wait(&expires); } + +SYSCALL_DEFINE1(uintr_event, unsigned int, flags) +{ + if (!uintr_arch_enabled()) + return -EOPNOTSUPP; + + int fd = flags; + return do_uintr_event_init(fd); +}
\ No newline at end of file |
