Linux的内核提供了一种机制,用来动态加载需要的服务,它就是模块。
一般情况下,嵌入式产品驱动的调试都是用动态挂载模块,发布时再把它编译到内核里面。
1.模块的挂载:
//加载 insmod xx.ko modprobe xx //卸载 rmmod xx.ko //查看模块信息 modinfo xx.ko
|
2.一个最基本的模块
#include <linux/kernel.h> #include <linux/init.h> #include <linux/module.h>
//模块初始化函数 static int __init my_module_init(void) { return 0; }
//模块退出函数 static void __exit my_module_exit(void) { } module_init(my_module_init); module_exit(my_module_exit); MODULE_LICESE("GPL");
|
3.在程序中加载模块,可以用函数request_module(module_name)
extern int __request_module(bool wait, const char *name, ...) \ __attribute__((format(printf, 2, 3))); #define request_module(mod...) __request_module(true, mod)
|
4.初始化标记
__init __initdata __exit __exitdata
阅读(1326) | 评论(0) | 转发(0) |
|