我需要在给定系统的所有内核上启用cr4位8(PCE)。 我目前有一个工作模块,它设置在模块加载时运行的核心位上。 我被卡在这里,并没有find关于如何并行运行在所有核心上的文档:
1)看来卸载并不总是发生在负载发生的核心上,所以我无法正确清理
2)我想不出任何方法来强制模块初始化在一个特定的内核上执行 – 如果可以的话,我可以简单地为每个内核单独调用一个模块来设置所有内核。 似乎没有可用于模块的sched_seffffinity等效项。
有没有办法强制这个模块在所有内核上运行,要么通过并行化,要么遍历所有内核? 我不能修改内核本身,也不能在启动时加载模块,所以我不能只是改变寄存器的初始设置。
感谢任何提示,我要疯了,试图弄清楚这一点!
找出它 – smp_call_function()在系统的所有内核上调用一个函数。 得到一个可以带来这个结果的搜索结果(很少/没有文档)只是非常棘手: – /
这是完美的,你可以通过在被调用函数中打印smp_processor_id()来验证每个内核运行代码。
编辑:这个功能只调用其他核心,所以你仍然需要单独调用一个函数来获取模块当前运行的核心!