我们首先从hello world 开始编写一个驱动模块
既然说模快,肯定有非模块,非模块就是直接编译进内核。
模块具有这样的特点:
-
模块不会被编译进内核,从而减少了内核image的大小
-
内核加载后,与内核中其他部分一样
废话不多说,先上代码
hello_world.c
#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL v2"); //模块许可证声明,如果不声明,加载模块时,会出现内核被污染(kernel tainted)的警告
MODULE_AUTHOR("xl"); //声明模块的作者
MODULE_DESCRIPTION("a simple hello world module");//模块的描述
static char *name = "hello world";
module_param(name,charp,S_IRUGO); //加载模块时输入的参数
static int __init hello_init(void)
{
printk("module init\n");
printk("parameter name is : %s\n",name);
return 0;
}
module_init(