3

是否可以将软中断或任何其他下半部分固定到处理器。我怀疑这可以从软中断代码中完成。但是在驱动程序内部,可以将特定的 IRQ 固定到核心。

4

1 回答 1

4

在用户模式下,您可以通过写入来/proc/irq/N/smp_affinity控制中断指向哪个处理器,从而轻松做到这一点。但是,实现此功能的代码的符号并未导出,因此很难从内核中执行(至少对于大多数驱动程序的结构可加载模块而言)。

不导出实现函数符号的事实表明内核开发人员不想鼓励这样做。大概是因为它夺走了用户的控制权。并且还将关于处理器数量等的假设嵌入到驱动程序中。

所以,要回答你的问题,是的,这是可能的,但不鼓励这样做,你需要做几个“丑陋”的事情之一来实现它((a)更改内核导出,(b)将你的驱动程序静态链接到主内核,或 (c)proc从内核模式打开/写入文件)。

实现这一点的常用方法是编写一个用户模式程序(甚至可以是一个 shell 脚本),将核心编号/掩码编程到适当的proc文件中。有关详细信息,请参见Documentation/IRQ-affinity.txt内核源目录。

于 2016-01-21T15:00:07.140 回答