Linux中下半部的两种不同处理方式:Tasklets和Softirq的区别
| Tasklets任务队列 | Softirq软中断 |
加载方式 | 可动态注册和卸载 | 编译期间静态分配 |
对应数据结构 | tasklet_struct{ *next state void (*func)() … } | softirq_action{ … … (*action)() } |
对应处理程序的函数指针 | func | action |
注册处理程序方式 | declare_tasklet(name,func,data) | open_softirq(中断索引号,处理函数action,数据) |
ISR如何通知其后半部开始执行 | ISR返回前调用 tasklet_schedule(&name) | ISR返回前调用 raise_softirq() |
此后半部何时执行 | 被调度的时候 | 被触发的时候 |