为什么preempt_disable不会增加preempt_count返回的值?

时间:2014-09-13 08:33:40

标签: linux-kernel

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/semaphore.h>

MODULE_LICENSE("GPL");

int init_module(void)
{
  printk("preempt_count: %d\n", preempt_count());
  preempt_disable();
  printk("preempt_count: %d\n", preempt_count());
  preempt_enable();

  return 0;
}

void cleanup_module(void)
{
  printk("cleanup_module\n");
}

以上代码将以下消息打印到/ var / log / syslog:

Sep 13 16:31:29 userver kernel: [  600.835013] preempt_count: 0
Sep 13 16:31:29 userver kernel: [  600.835017] preempt_count: 0

为什么preempt_disable之后的preempt_count仍然返回0?

1 个答案:

答案 0 :(得分:1)

当内核未使用CONFIG_PREEMPT编译时,没有抢占计数器。