第四十三讲 写一个内核模块
一、基础知识
1、头文件
头文件 | 说明 |
---|---|
linux/module.h | 包含内核模块信息声明的相关函数 |
linux/init.h | 包含了 module_init() 和 module_exit() 函数声明 |
linux/kernel.h | 包含内核提供的各种函数 |
2、打印信息
前面编写程序都是使用 printf 进行打印消息的,但是在内核不能使用 printf 进行打印消息。因为 printf 是 glibc 提供的打印函数,工作与用户空间。内核模块无法使用 glibc 函数。但是内核提供了一个 printk 函数,能让我们输出打印信息。
-
printf
说明:类似 printf 函数,但是需要指定打印等级
用法:
等级 说明 KERN_EMERG "<0>"通常是系统崩溃前的消息 KERN_ALERT "<1>"需要立即处理的消息 KERN_CRIT "<2>"严重情况 KERN_ERR "<3>"错误情况 KERN_WARING "<4>"警告 KERN_NOTICE "<5>"需要注意 KERN_INFO "<6>"普通消息 KERN_DEBUG "<7>"调试信息 -
查看 printk 打印等级
注意:仅当小于日志等级消息才会被打印
cat /proc/sys/kernel/printk
4 4 1 7
:这是上面命令的返回,分别代表了 4: