下半部和推后执行的工作
最早: bottom half (BH) 在2.5版本被废除
任务队列(task queue) 在2.5版本被废除
软中断(softirq)和tasklet 在2.3版本被加进来
工作队列 在2.3版本被加进来
软中断:
void (*action) (struct softirq_action *)
}
软中断状态寄存器:soft_interrupt_state(irq_stat) 32位
软中断向量表: softirq_vec[NR_SOFTIRQS]
软中断守护进程:do_softirq()
1.中断处理程序标记中断标记位,触发软中断
2.在合适的时候唤起软中断
3.执行do_softirq
最早: bottom half (BH) 在2.5版本被废除
任务队列(task queue) 在2.5版本被废除
软中断(softirq)和tasklet 在2.3版本被加进来
工作队列 在2.3版本被加进来
软中断:
软中断结构体:struct softirq_action
{void (*action) (struct softirq_action *)
}
软中断状态寄存器:soft_interrupt_state(irq_stat) 32位
软中断向量表: softirq_vec[NR_SOFTIRQS]
软中断守护进程:do_softirq()
1.中断处理程序标记中断标记位,触发软中断
2.在合适的时候唤起软中断
3.执行do_softirq
软中断的特点:不会相互抢占,可并发执行。
do_softirq()的核心部分代码
tasklet
(1)声明tasklet
(2)编写自己的tasklet处理程序
(3)调度tasklet tasklet_schedule(&my_tasklet)
(4) 在合适的时候唤起软中断
(5)执行do_softirq