inh*_*dle 2 linux linux-kernel
我将实现我的自定义模块,其中使用打印CPU的信息print_cpu_info().为了调用print_cpu_info(),我已经包含了所需的头文件,但它不起作用.这是我的模块.
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/alternative.h>
#include <asm/bugs.h>
#include <asm/processor.h>
#include <asm/mtrr.h>
#include <asm/cacheflush.h>
extern struct cpuinfo_x86 boot_cpu_data;
int cpuinfox86_init(void)
{
print_cpu_info(&boot_cpu_data);
return 0;
}
void cpuinfox86_exit(void)
{
printk("good bye cpu\n");
}
module_init(cpuinfox86_init);
module_exit(cpuinfox86_exit);
MODULE_LICENSE("GPL");
Run Code Online (Sandbox Code Playgroud)
编译完这个模块后,我明白了
make -C /lib/modules/3.2.28-2009720166/build SUBDIRS=/home/tracking/1031_oslab modules
make[1]: Entering directory `/usr/src/linux-3.2.28'
CC [M] /home/tracking/1031_oslab/module.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "print_cpu_info" [/home/tracking/1031_oslab/module.ko] undefined!
CC /home/tracking/1031_oslab/module.mod.o
LD [M] /home/tracking/1031_oslab/module.ko
make[1]: Leaving directory `/usr/src/linux-3.2.28'
Run Code Online (Sandbox Code Playgroud)
任何的想法?
"print_cpu_info"不是导出符号,因此模块无法使用它.但是,您可以使用导出的"kallsyms_lookup_name"获取"print_cpu_info"的地址,并使用函数指针执行函数调用.