linux如何同步抢占计数

mou*_*sey 6 c linux-kernel

http://lxr.linux.no/linux+v2.6.35/include/linux/preempt.h#L21

我只是想尝试获取linux源代码.我看到了这个抢先计数,linux如何确保抢占计数是原子的?代码只是递增值.

我还有另一个问题.为什么中断句柄需要保持互斥.因为只有一个可以一次执行吗?

此外,当中断被禁用时,操作系统会做什么?忽略中断或维护队列?

caf*_*caf 7

它递增preempt_count()- 注意()- 这是一个宏定义为:

#define preempt_count() (current_thread_info()->preempt_count)
Run Code Online (Sandbox Code Playgroud)

所以它增加了一个每线程变量,它不需要任何锁定并且是安全的.


最好将您的多个问题作为单独的问题提出,但简要说明一下:

  • 中断处理程序通常可以被其他中断处理程序中断;
  • 中断处理程序可以在一个CPU内核上运行,而其他内核代码在另一个内核上运行;
  • 通常使用硬件机制禁用中断.这些往往会记住待处理的中断,但每个中断向量最多只能有一个中断.