在学习编写Linux内核模块的时候我们首先要清楚的知道内核模块的作用,为什么要使用内核模块?这是因为Linux内核的整体结构非常的庞大,包含的组件也非常的多,把所有的内核模块都编译到Linux内核,会导致的问题是内核很大,同时在现有的内核新增或删除部分功能时,不得不重新编译内核,可谓相当的费时。而模块的使用就是为了解决这一问题,即动态的在内核中添加或者删除相应功能。下面以一个经典的代码来看是相关的分析:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("xxx");
MODULE_DESCRIPTION("Hello World Module");
MODULE_ALIAS("a simplest module");
static int __init hello_init()
{
printk(KERN_EMERG"Hello World!/n"); //注意比较两种printk( )参数的不同之处
return 0; //即优先级的用法
}
static void __exit hello_exit()
{
printk("<6>hello exit/n");
}
module_init(hello_init);
module_exit(hello_exit);
在阅读相关的代码时我们的入口点不再是main( )函数,而应该是module_init( 函数名 )函数;细心的话就会发现在hello_init()函数前面有一个__init ,它的作用是在连