模块间通信实例 - newer2/Blog GitHub Wiki
. 基本功能 . 源文件 . 头文件 . Makefile
. 基本功能 module1导出加法和减法两个功能函数,module2通过insmod时传入参数,决定调用对应功能函数
. 源文件
module1.c ------ 该源文件只是为module2提供一些功能实现,所以module1并没有模块加载函数、模块卸载函数(module_init module_exit) +++++++
#include <linux/init.h>
#include <linux/module.h>
#include "module1.h" //module1 头文件
long add(int a, int b)
{
return a+b;
}
long sub(int a, int b)
{
return a-b;
}
EXPORT_SYMBOL(add); //导出两个功能函数
EXPORT_SYMBOL(sub);
MODULE_LICENSE("Dual BSD/GPL");
module2.c
#include <linux/init.h>
#include <linux/module.h>
#include "module1.h" //提供待引用函数原型
static long a = 1;
static long b = 1;
static AddOrSub = 1; //传入参数,决定加or减
static int module2_init(void)
{
long result = 0;
if(1 == AddOrSub){
result = add(a,b);
}
else{
result = sub(a,b);
}
printk(KERN_ALERT "result: %ls\n", result);
return 0;
}
static void module2_exit(void)
{
printk(KERN_ALERT "communicaton among modules exit\n");
}
module_init(module2_init);
module_exit(module2_exit);
module_param(a, long, S_IRUGO);
module_param(b, long, S_IRUGO);
module_param(AddOrSub, int, S_IRUGO);
MODULE_LICENSE("Dual BSD/GPL");
. 头文件 module1.h
#ifndef _MODULE1_H_
#define _MODULE1_H_
long add(int a, int b);
long sub(int a, int b);
#endif
. Makefile module1 Makefile module2 Makefile