我正在尝试理解do_softirq在什么时候被调用
a)从中断返回路径b)当软中断up守护程序被唤醒时。
Q1。调用它的其他地方有哪些。
Q2。raise_softirq会调用do_softirq吗?
现在softirq总是在中断上下文中运行,所以softirqd守护进程也在中断上下文中运行?但是softirqd被调度器拾取。
Q3。在高网络负载的情况下,内核如何对软中断进行节流?CPU是如何处理用户进程的?比方说播放一个流视频。
发布于 2014-05-05 22:50:17
A1。仅从__local_bh_enable
和netif_rx_ni
调用do_softirq
。
A2。不是以直接的方式。raise_softirq
唤醒运行run_ksoftirqd
函数的内核线程ksoftirqd
,该函数依次调用__do_softirq()
-> __local_bh_enable()
-> do_softirq()
。
Softirq不在中断上下文中运行,因为softirq的目的是将大部分中断处理移出中断上下文。softirqd线程在内核上下文中运行。
A3。softirqd线程由相同的调度程序管理,因此它们在调度方面与用户线程相等。
https://stackoverflow.com/questions/23474547
复制相似问题