很简单的一个程序,sub模块提供两个函数sub_integer,add_integer,并将其导出到内核符号表中,sub_test模块对这两个函数进行调用。这算是自己写的第一个内核模块程序吧,纪念一下.
sub.c:
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
//int add_integar(int,int);
//int sub_integar(int,int);
int add_integer(int a,int b){
return a+b;
}
int sub_integer(int a,int b){
return a-b;
}
int __init mod_init(){
printk(KERN_ALERT "the first module program");
return 0;
}
void __exit mod_exit(){
printk(KERN_ALERT "i like u");
}
EXPORT_SYMBOL(add_integer);
EXPORT_SYMBOL(sub_integer);
module_init(mod_init);
module_exit(mod_exit);
sub_test.c:
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
MODULE_LICENSE("Dual BSD/GPL");
extern int sub_integer(int,int);
extern int add_integer(int,int);
int __init test1(void){
int a=sub_integer(3,1);
int b=add_integer(2,2);
printk(KERN_ALERT"sub:%d/nadd:%d/n",a,b);
return 0;
}
void __exit test2(void){
printk(KERN_ALERT"bybye/n");
}
module_init(test1);
module_exit(test2);
对这两个函数的引用应该有比extern更好的方式,要是都extern就太麻烦了