KPREEMPT(9)

KPREEMPT(9) | Kernel Developer's Manual | KPREEMPT(9)

# 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)

February 16, 2010 | NetBSD 9.3