| KPREEMPT(9) | Kernel Developer's Manual | KPREEMPT(9) | 
kpreempt —
#include <sys/systm.h>
void
  
  kpreempt_disable(void);
void
  
  kpreempt_enable(void);
bool
  
  kpreempt_disabled(void);
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.
| February 16, 2010 | NetBSD 9.4 |