模块中未经过运行的内核api用法

时间:2015-09-29 09:04:00

标签: api kernel

我尝试使用irq_to_desc api来获取芯片数据并设置内核模块的irq亲和性。但api irq_to_desc不会在linux内核中导出。 有什么办法可以通过任何其他方式获得irq芯片数据或设置irq_affinity?

谢谢, dev的

1 个答案:

答案 0 :(得分:1)

似乎内核2.6.32不提供对模块的irq描述符的访问。所有使用它的驱动程序都是内置的。

如果您确实需要此功能,可以使用find_symbol获取其地址:

// It will be pointer to irq_to_desc function.
struct irq_desc (*func_irq_to_desc)(unsigned int irq); 

// Initialize pointer to function
struct kernel_symbol* ks = find_symbol("irq_to_desc");
if(ks)
  func_irq_to_desc = (typeof(func_irq_to_desc))ks->value;

// Use function
func_irq_to_desc(2)->affinity = 3;

当然,这是一个黑客攻击。此外,使用find_symbol需要模块的“GPL”许可。