epoll_wait(): make sure to schedule in offload

Change-Id: I435416cb0ac005a03cd995bf1aae75c9ce7b2082
This commit is contained in:
Balazs Gerofi
2019-09-17 13:57:43 +09:00
committed by Masamichi Takagi
parent 0f6c36870c
commit 5e44c9c9f9
2 changed files with 6 additions and 0 deletions

View File

@ -143,3 +143,4 @@ SYSCALL_HANDLED(1045, signalfd)
SYSCALL_DELEGATED(1049, stat) SYSCALL_DELEGATED(1049, stat)
SYSCALL_DELEGATED(1060, getpgrp) SYSCALL_DELEGATED(1060, getpgrp)
SYSCALL_HANDLED(1062, time) SYSCALL_HANDLED(1062, time)
SYSCALL_DELEGATED(1069, epoll_wait)

View File

@ -242,6 +242,10 @@ long do_syscall(struct syscall_request *req, int cpu)
unsigned long flags; unsigned long flags;
DECLARE_WAITQ_ENTRY(scd_wq_entry, cpu_local_var(current)); DECLARE_WAITQ_ENTRY(scd_wq_entry, cpu_local_var(current));
if (req->number == __NR_epoll_wait ||
req->number == __NR_epoll_pwait)
goto schedule;
cpu_pause(); cpu_pause();
/* Spin if not preemptable */ /* Spin if not preemptable */
@ -270,6 +274,7 @@ long do_syscall(struct syscall_request *req, int cpu)
continue; continue;
} }
schedule:
flags = cpu_disable_interrupt_save(); flags = cpu_disable_interrupt_save();
/* Try to sleep until notified */ /* Try to sleep until notified */