分类: 嵌入式
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函数分别可以增加或减少模块的引用计数,书上说一般属于较低层的总线驱动这类设备调用,。