日期:2014-05-16 浏览次数:20714 次
建立和运行模块
2.1模块基本构成
最简单的helloworld模块示例代码如下:
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("DualBSD/GPL");
staticint hello_init(void)
{
printk(KERN_ALERT"Hello, world\n");
return0;
}
staticvoid hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
该模块定义了两个函数,hello_init在模块被加载时调用,hello_exit在模块被删除时调用。module_init和module_exit两行代码使用linux宏指明以上两个函数角色。另一个宏MODULE_LICENSE告诉内核模块有一个自由许可证。如果没有这样的声明,内核加载模块时就会抱怨。
2.2编译和加载
内核是一个大的、独立的程序,对于它的各个部分如何组合在一起有详细的明确的要