NAME
kpreempt —
control kernel
preemption
SYNOPSIS
#include <sys/systm.h>
void
kpreempt_disable(
void);
void
kpreempt_enable(
void);
bool
kpreempt_disabled(
void);
DESCRIPTION
These functions are used to control kernel preemption of the calling LWP.
On architectures where kernel preemption is not supported natively, these
functions may still be used.
It should be noted that kernel preemption is also disabled when holding the
interrupt priority level above IPL_NONE, e.g. using
spl(9) or spinning
mutex(9) calls or holding
kernel_lock (indicating that the code is not MT safe).
kpreempt_disable() disables kernel preemption of the calling
LWP. Note that disabling kernel preemption can prevent LWPs with higher
priorities from running.
kpreempt_enable() enables kernel preemption of the calling
LWP, which was previously disabled by
kpreempt_disable().
kpreempt_disable() and
kpreempt_enable() can
be nested.
kpreempt_disabled() returns
true
if
preemption of the calling LWP is disabled. It is only for diagnostic purpose.
SEE ALSO
intro(9),
mutex(9),
spl(9)