| CPU_NEED_RESCHED(9) | Kernel Developer's Manual | CPU_NEED_RESCHED(9) |
cpu_need_resched —
context switch notification
#include
<sys/cpu.h>
void
cpu_need_resched(struct
cpu_info *ci, struct lwp
*l, int flags);
The
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 11.0 |