我想了解什么时候do_softirq被称为
a)从中断返回路径 b)当softirqd守护进程被唤醒时。
Q1。有什么其他地方可以调用它。
Q2。 raise_softirq会调用do_softirq吗?
现在softirq总是在中断上下文中运行,所以softirqd守护进程也在中断上下文中运行? 但调度程序会选择softirqd。
Q3。在高网络负载的情况下,内核如何对softirq进行限制。 CPU如何处理用户进程。比如说播放流媒体视频。
答案 0 :(得分:0)
A1。仅从do_softirq
和__local_bh_enable
调用netif_rx_ni
。
A2。不是直接的方式。 raise_softirq
唤醒运行ksoftirqd
函数的内核线程run_ksoftirqd
,后者又调用__do_softirq()
- > __local_bh_enable()
- > do_softirq()
。
Softirq不会在中断上下文中运行,因为softirq的目的是将大部分中断处理移出中断上下文。 softirqd线程在内核上下文中运行。
A3。 softirqd线程由同一个调度程序管理,因此它们在调度方面等于用户线程。