学习linux内核编程,LKM(可加载内核模块)是非常有用的一部分。LKM是内核的扩展,可以随时加载到内核中,用完后也可以方便的卸载,是扩展linux内核功能的有效手段。
下面编写一个简单的模块,并实现加载:
代码如下:
/*hellomodule.c*/
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Module Author");
MODULE_DESCRIPTION("Module Description");
static int __init hello_init(void)
{
printk(KERN_ALERT "HelloModule is installed.\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT "HelloModule is removed.\n");
}
module_init(hello_init);
module_exit(hello_exit);
解释:
模块需要至少需要两个函数module_init()和module_exit()。其中第一个是在安装模块时被调用,所有的初始化工作可以再其中完成。第二个函数是在卸载模块时调用,可以在其中做一些清理工作