是否可以将 softirq 或任何其他下半部分固定到处理器上。我怀疑这是否可以从 softirq 代码中完成。但是在驱动程序内部是否可以将特定的 IRQ 固定到 核心。
在用户模式下,您可以通过写入/proc/irq/N/smp_affinity
来控制中断定向到哪个处理器,从而轻松完成此操作。但是,实现此代码的代码符号不会导出,因此很难从内核中导出(至少对于大多数驱动程序的结构方式的可加载模块而言)。
实现函数符号未导出的事实表明内核开发人员不想鼓励这样做。大概是因为它剥夺了用户的控制权。并且还将有关处理器数量等的假设嵌入到驱动程序中。
所以,要回答你的问题,是的,这是可能的,但不鼓励这样做,你需要做几个"丑陋"的事情之一来实现它((a)更改内核导出,(b)静态地将驱动程序链接到主内核,或(c)从内核模式打开/写入proc
文件)。
实现此目的的常用方法是编写一个用户模式程序(甚至可以是 shell 脚本),将内核数字/掩码编程到适当的proc
文件中。有关详细信息,请参阅内核源代码目录中的Documentation/IRQ-affinity.txt
。