日期:2014-05-16  浏览次数:20700 次

linux驱动开发笔记2

建立和运行模块

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_initmodule_exit两行代码使用linux宏指明以上两个函数角色。另一个宏MODULE_LICENSE告诉内核模块有一个自由许可证。如果没有这样的声明,内核加载模块时就会抱怨。

2.2编译和加载


内核是一个大的、独立的程序,对于它的各个部分如何组合在一起有详细的明确的要