shaohui973 发表于 2011-03-02 21:16

中断中的tasklet疑问?

当通过request_irq申请到中断通道后,如果发生了中断,那么中断的上半部响应中断,在其后的某个时间内会调用当前处理器上的tasklet,我想问下:

1.中断例程是怎么添加到tasklet上的?内核会做的,还是要驱动程序里做的?

2.对上面的问题,我自己臆想了一种情况:就是在申请中断号前,就调用了tasklet_init来初始化,也即tasklet里面的任务是中断处理例程,如果是这样的话,要是设备要响应多个不同中断中断,是不是需要相应数目的tasklet???



求解中,请达人解惑下,谢谢!:em14:

accessory 发表于 2011-03-03 00:35

可以找个驱动自己看看。比如 RTL8139 OR INTEL E1000

hujinzhi 发表于 2011-03-06 09:20

中断上半部主要是响应中断,处理一些紧急事务,将一些繁琐的事件交给下半部来处理,即tasklet。当上班部响应中断时,在处理例程中激活tasklet,tasklet的执行是在将来某个安全时刻,多次调用tasklet不会被重复执行,只有当一次tasklet执行完后才会执行下一次。

stefan_wei 发表于 2011-03-07 09:35

其实在下半部中断时,有3种处理方式,softirq,tasklet和workqueue。看你怎么选择了,不一定要用tasklet。
如果是tasklet的话,它的操作必须是原子的,既不能备打断,而且只能在一个cpu上运行。

EZWORD 发表于 2011-03-07 16:57

1,在驱动的中断中标记,由中断退出时执行,一般运行于中断上下文。
2,应该是的吧,代码上至少是这样的。

yuanlulu3614 发表于 2011-03-09 09:02

1.是初始化时注册了处理例程,调度tasklet后相应例程会被执行,注意是在软中断上下文中执行。

2。同一个CPU的tasklet处理例程会被顺次执行。

whjzbp 发表于 2011-03-09 09:35

不太懂,学习之

chenrvmldd 发表于 2011-03-11 09:06

回复 1# shaohui973


    哥也正在学习啊
页: [1]
查看完整版本: 中断中的tasklet疑问?