很简单的内核模块A+B
//func.c
#include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> int var1=0; int var2=0; int sum(void) { return var1+var2; } static int fun_init(void) { sum(); return 0; } static void fun_exit(void) { return ; } EXPORT_SYMBOL(var1); EXPORT_SYMBOL(var2); EXPORT_SYMBOL(sum); module_init(fun_init); module_exit(fun_exit);
//call.c
#include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> extern int var1; extern int var2; extern int sum(void); int call_init(void) { var1=3; var2=4; printk("%d+%d=%d\n",var1,var2,sum()); return 0; } void call_exit(void) { return ; } module_init(call_init); module_exit(call_exit);
//Makefile
obj-m := call.o func.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules clean: rm -rf *.o *.mod.c *.order *.symvers *.ko
实施过程:
1.make
2.sudo insmod func.ko
3.sudo insmod call.ko
4.dmesg