Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30778
  • 博文数量: 7
  • 博客积分: 67
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-22 14:53
文章分类
文章存档

2012年(7)

分类:

2012-01-06 15:47:14

 /*

 * 模块参数

 * 模块参数可以增加模块的灵活性。模块参数可以控制模块的内部逻辑

 * 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  

阅读(726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~