分类: 嵌入式
2011-09-26 12:02:55
/*
* 模块参数
* 模块参数可以增加模块的灵活性。模块参数可以控制模块的内部逻辑
* Lzy 2011-9-26
*/
#include
#include
static char *str = "Word";
module_param(str, charp, S_IRUGO); /* 定义模块参数*/
static int __init hello_init(void)
{
printk("Hello %s\n",str);
return 0;
}
static void __exit hello_exit(void)
{
printk("GoodBye %s\n",str);
return ;
}
module_init(hello_init); /* 指定模块加载函数*/
module_exit(hello_exit); /* 指定模块卸载函数*/
MODULE_LICENSE("GPL"); /* 指定许可权为GPL*/
/*
* 模块通信
* 模块之间共享变量、数据结构,也可以调用对方提供的功能函数
* 介绍:
* add_sub提供了两个导出函数add_integer()和sub_integer()
* 模块test调用这两个方法
* Lzy 2011-9-26
*/
#include
#include
int add_integer(int a, int b)
{
return a+b;
}
int sub_integer(int a, int b)
{
return a-b;
}
/* 符号导出*/
EXPORT_SYMBOL(add_integer);
EXPORT_SYMBOL(sub_integer);
MODULE_LICENSE("GPL");
/*
* 模块通信
* 模块之间共享变量、数据结构,也可以调用对方提供的功能函数
* 介绍:
* add_sub提供了两个导出函数add_integer()和sub_integer()
* 模块test调用这两个方法
* test模块可以接收一个模块参数,当参数为时,调用add_integer(),参数不为时,调用sub_integer()
* Lzy 2011-9-26
*/
#include
#include
static int AddOrSub = 0;
module_param(AddOrSub, int, S_IRUGO);
int sub_integer(int, int);
int add_integer(int, int);
static int __init test_init(void)
{
int result = 0;
if(AddOrSub)
result = sub_integer(7,3);
else
result = add_integer(7,3);
printk("The %s result is %d\n",AddOrSub==0?"Add":"Sub",result);
return 0;
}
static void __exit text_exit(void)
{
return ;
}
module_init(test_init);
module_exit(text_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Lzy");
源码: 模块函数与模块之间通信.rar