linux 内核模块

1.linux内核模块的程序结构

 

                    1.模块加载函数(必须)

                    2.模块卸载函数(必须)

                    3.模块许可证声明(必须)

                    4.模块参数(可选)

                    5.模块导出符号(可选)

                    6.模块作者等信息声明(可选)

 

  #include <linux/init.h>

  #include <linux/modules.h>

  MODULE_LICENSE("Dual BSD/GPL");

 

  static int hello_init(void)

 {

       printk(KERN_ALERT  "Hello World Enter!/n");

       return 0;

 }

 

  static void hello_exit(void)

 {

       printk(KERN_ALERT "Hello World Exit!/n");   

 }

 

  module_init(hello_init);

  module_exit(hello_exit);

 

  MODULE_AUTHOR("XXXXXXX");

  MODULE_DESCRIPTION("A Simple Hello World Module");

  MODULE_ALIAS("a simplest module");

 

 

 

2.模块加载函数

      

       linux内核模块函数一般以__init标示声明

       模块加载函数必须以“module__init(函数名)”

 

 调用:request_module(模块名)

 

3.模块卸载函数

 

       以__exit标示声明

 

4.模块参数

 

      用“module_param(参数名,参数类型,参数读写权限)”为模块定义一个参数

      用“module_param_array(数组名,数组类型,数组长,参数读写权限)”定义一组参数

 

5.导出符号

 

      EXPORT_SYMBOL(符号名)

      EXPORT_SYMBOL_GPL(符号名)

      导出的符号可以作为其他模块使用

 

 

6.模块的使用计数

 

      try_module_get(&module)

      module_put(&module)

 

7.模块的编译

 

      步骤:

                  先进入linux的内核所在的目录,并编译出 .O文件   运行MODPOST会生成临时的.MOD.C文件   然后根据此文件编译出.MOD.O之后连接.O文件得到模块文件.KO

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值