Chinaunix首页 | 论坛 | 博客
  • 博客访问: 231168
  • 博文数量: 59
  • 博客积分: 1215
  • 博客等级: 少尉
  • 技术积分: 575
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-09 02:18
文章分类

全部博文(59)

文章存档

2012年(53)

2011年(6)

分类: 嵌入式

2012-01-21 19:28:56

第四章:

     这部分是讲Linux内核模块的。内核模块一般都是xxx.ko,insmod、lsmod和rmmod命令分别是加载和卸载。modprobe在加载模块的时候也会加载上依赖的模块。

     接着讲模块程序的结构。加载函数一般以__init标识声明,如:

     static int __init initialization_function(void)

     {

            ……

     }

    module_init(initialization_function);   //必须这样指定。

    注意返回值需根据定义的错误值才方便。

    request_module函数可以加载别的模块。

    所有标识为__init的函数在连接的时候都放在.init_text这个区段。

    同理,__exit和module_exit你应该都懂得。主要注意申请的资源和内存要释放,文件要关闭。

    其实__exit和__init都是一些宏来的,譬如__attribute__((__section__ (“.init.text”)))

   

     module_param函数可以为模块定义参数。在/sys/module/xxx/里面可以看到这些参数,每个参数一个文件。

 

     EXPORT_SYMBOL函数可以导出符号名供其他模块使用。

     try_module_get和try_module_put函数分别可以增加或减少模块的引用计数,书上说一般属于较低层的总线驱动这类设备调用,。

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