编写一个内核模块:要求加载模块时内核日志中显示每位同学的学号,卸载时显示“bye-embedded”且将第2题中的内核模块加载到内核中,并查看内核日志内容及内核模块信息
时间: 2024-02-01 19:14:35 浏览: 77
内核模块的编写示例代码
很好,以下是一个简单的内核模块示例代码,可以实现加载模块时显示学号,卸载时显示“bye-embedded”:
```c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("Embedded System Assignment");
MODULE_VERSION("0.1");
static char* student_id = "your_student_id";
static int __init hello_init(void)
{
printk(KERN_INFO "Hello, %s!\n", student_id);
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "Goodbye, %s!\n", student_id);
}
module_init(hello_init);
module_exit(hello_exit);
```
在 Makefile 中添加以下内容以编译内核模块:
```makefile
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
```
编译完成后,使用 `insmod` 命令加载模块,使用 `rmmod` 命令卸载模块。在内核日志中可以看到输出的学号信息和“Goodbye”信息。
阅读全文