如何在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?