系统启动流程 - 理解modules加载流程
#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
// 定义模块参数,可以通过"insmod"或"modprobe"命令行指定
static int __init hello_init(void) {
printk(KERN_ALERT "Hello, World!\n");
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_ALERT "Goodbye, World!\n");
}
module_init(hello_init);
module_exit(hello_exit);
// MODULE_LICENSE用于指定模块的许可证
MODULE_LICENSE("Dual BSD/GPL");
// 模块参数示例
// static int num = 0;
// module_param(num, int, S_IRUGO);
这段代码定义了一个简单的内核模块,它在内核启动时通过printk
函数打印出"Hello, World!",在模块卸载时打印出"Goodbye, World!"。代码中使用了module_init
和module_exit
宏来分别注册模块的初始化和清理函数。同时,示例中还展示了如何使用module_param
宏来定义模块参数,这可以让用户在加载模块时传递参数。
评论已关闭