学习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()。其中第一个是在安装模块时被调用,所有的初始化工作可以再其中完成。第二个函数是在卸载模块时调用,可以在其中做一些清理工作。
代码中printk()是输出显示数据的系统调用,其工作在内核空间中。

本文介绍了Linux内核编程中的LKM,即可加载内核模块。LKM作为内核扩展,允许动态加载和卸载,便于功能扩展。文中展示了创建简单模块的步骤,包括module_init()和module_exit()函数,以及如何通过Makefile编译模块。加载模块使用insmod命令,查看已加载模块用lsmod,卸载则用rmmod。
&spm=1001.2101.3001.5002&articleId=7334491&d=1&t=3&u=f70076b739b541c582fd5e6314d43286)
1868

被折叠的 条评论
为什么被折叠?



