Preemption
Preemption API
preemptible() - return whether preemption is able or not
#define preemptible() (preempt_count() == 0 && !irqs_disabled())
현재 선점이 가능하다면 true를 리턴, 아닐경우 false를 리턴함. irqs_disable()는 왜 있지???
preempt_enable() -
preempt_count를 1 감소시켰을 때 선점이 가능하고 또 필요하다면 __preempt_schedule()을 호출해서 선점을 시도한다.
#define preempt_enable() \
do { \
barrier(); \
if (unlikely(preempt_count_dec_and_test())) \
__preempt_schedule(); \
} while (0)
preempt_disable_notrace()
current의 preemption count를 1 증가시켜서 선점을 비활성화한다.