如何在Linux内核模块中获取CPU信息?

问题描述:

我看着我的内核源代码,发现如下定义KERNELDIR /弓/ 86 /包括/ ASM/processor.h如何在Linux内核模块中获取CPU信息?

extern void cpu_detect(struct cpuinfo_x86 *c); 

我试图在树外的我的内核使用此使用此代码模块:

#include <asm/processor.h> 
struct cpuinfo_x86 cpu; 
cpu_detect(&cpu); 
if(cpu.x86_model == 28) // Intel Atom 
{ 
    // do stuff 
} 

当我建我的源代码,我得到以下警告:

Building modules, stage 2. 
MODPOST 1 modules 
WARNING: "cpu_detect" [<my-kernel-module-path>.ko] undefined! 

的是重新获得更好的方式从我的模块内核空间获取CPU信息?如果我这样做的方式是正确的,是否有任何特殊的链接选项需要传递,以便我可以获取目标代码?

我没有找到cpu_detect的任何信息,但搜索print_cpu_info(也存在于这个头)发现了一个计算器的问题,其中有一个解决方案:

使用函数指针kallsyms_lookup_name("print_cpu_info"),由于该功能未导出用于模块(仅核心内核使用)

How my custom module on linux 3.2.28 can make a call to print_cpu_info?