当前位置: 技术问答>linux和unix
请问linux下半部处理的时候是否要关闭中断?
来源: 互联网 发布时间:2016-04-24
本文导语: 在do_softirq函数中有这么一段: local_irq_save(flags); pending=local_softirq_pending(); if(pending) __do_softirq(); local_irq_restore(flags); 也就是说,进行下半部处理的时候,本CPU时候是关闭中断的? ...
在do_softirq函数中有这么一段:
local_irq_save(flags);
pending=local_softirq_pending();
if(pending)
__do_softirq();
local_irq_restore(flags);
也就是说,进行下半部处理的时候,本CPU时候是关闭中断的?
local_irq_save(flags);
pending=local_softirq_pending();
if(pending)
__do_softirq();
local_irq_restore(flags);
也就是说,进行下半部处理的时候,本CPU时候是关闭中断的?
|
在这个时候,中断是关的,目的是保护系统softirq的bit mask。然后在__do_softirq里面执行具体的软中断。之后__do_softirq会再把系统中断禁止,再去检查有没有pending的softirq.
|
正如这位兄台所说,会尽量不要关中断,但是有时候为了保护某些资源,可能会关闭一下(但是这中关闭的时间也是非常短的)。