中断中的tasklet疑问?
当通过request_irq申请到中断通道后,如果发生了中断,那么中断的上半部响应中断,在其后的某个时间内会调用当前处理器上的tasklet,我想问下:1.中断例程是怎么添加到tasklet上的?内核会做的,还是要驱动程序里做的?
2.对上面的问题,我自己臆想了一种情况:就是在申请中断号前,就调用了tasklet_init来初始化,也即tasklet里面的任务是中断处理例程,如果是这样的话,要是设备要响应多个不同中断中断,是不是需要相应数目的tasklet???
求解中,请达人解惑下,谢谢!:em14: 可以找个驱动自己看看。比如 RTL8139 OR INTEL E1000 中断上半部主要是响应中断,处理一些紧急事务,将一些繁琐的事件交给下半部来处理,即tasklet。当上班部响应中断时,在处理例程中激活tasklet,tasklet的执行是在将来某个安全时刻,多次调用tasklet不会被重复执行,只有当一次tasklet执行完后才会执行下一次。 其实在下半部中断时,有3种处理方式,softirq,tasklet和workqueue。看你怎么选择了,不一定要用tasklet。
如果是tasklet的话,它的操作必须是原子的,既不能备打断,而且只能在一个cpu上运行。 1,在驱动的中断中标记,由中断退出时执行,一般运行于中断上下文。
2,应该是的吧,代码上至少是这样的。 1.是初始化时注册了处理例程,调度tasklet后相应例程会被执行,注意是在软中断上下文中执行。
2。同一个CPU的tasklet处理例程会被顺次执行。 不太懂,学习之 回复 1# shaohui973
哥也正在学习啊
页:
[1]