CPU_NEED_RESCHED(9) | Kernel Developer's Manual | CPU_NEED_RESCHED(9) |
cpu_need_resched
—
#include <sys/cpu.h>
void
cpu_need_resched
(struct
cpu_info *ci, struct lwp
*l, int flags);
cpu_need_resched
() function is the
machine-independent interface for the scheduler to notify machine-dependent
code that a context switch from the current LWP l, on
the cpu ci, is required. This event may occur if a
higher priority LWP appears on the run queue or if the current LWP has
exceeded its time slice. l is the last LWP observed
running on the CPU. It may no longer be running, as
cpu_need_resched
() can be called without holding
scheduler locks.
If the RESCHED_KPREEMPT
flag is specified
in flags and __HAVE_PREEMPTION
C pre-processor macro is defined in
<machine/intr.h>
,
machine-dependent code should make a context switch happen as soon as
possible even if the CPU is running in kernel mode. If the
RESCHED_KPREEMPT
flag is not specified, then
RESCHED_UPREEMPT
is specified instead.
If the RESCHED_IDLE
flag is specified in
flags, the last thread observed running on the CPU was
the idle LWP.
If RESCHED_REMOTE
flag is specified in
flags, the request is not for the current CPU. The
opposite also holds true. If ci is not the current
processor, cpu_need_resched
() typically issues an
inter processor call to the processor to make it notice the need of a
context switch as soon as possible.
cpu_need_resched
() is always called with
kernel preemption disabled.
Typically, the cpu_need_resched
() function
will perform the following operations:
userret
().November 17, 2019 | NetBSD 10.1 |