1.第一条“hello driver”程序

本文介绍了Linux内核模块开发中的printk函数使用,包括不同日志级别及其含义。示例展示了如何在内核中使用printk打印紧急信息。此外,还讲解了编译、加载、卸载及查看内核模块的命令,如makefile的构建,insmod、lsmod和rmmod的使用。文章最后提供了一个简单的内核模块示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1 相关函数
printk函数
例:printk(KERN_EMERG “HELLO WORLD enter!\n”);
只有当日志级别小于控制台级别时,才会在控制台打印出来
日志级别有8种:
#define KERN_EMERG “<0>” /* system is unusable /
#define KERN_ALERT “<1>” /
action must be taken immediately*/
#define KERN_CRIT “<2>” /* critical conditions /
#define KERN_ERR “<3>” /
error conditions /
#define KERN_WARNING “<4>” /
warning conditions /
#define KERN_NOTICE “<5>” /
normal but significant condition*/
#define KERN_INFO “<6>” /* informational /
#define KERN_DEBUG “<7>” /
debug-level messages */
1.2 编译
makefile里面的clean,all后面必须有Tab键。生成的KO文件就是驱动文件。
1.3 加载、卸载、查看模块
– insmod加载模块命令
– lsmod查看模块命令
– rmmod卸载模块命令

#include <linux/init.h>                /*hello_init()、hello_init()在此头文件中*/
#include <linux/module.h>             /*MODULE_LICENSE()在此头文件中*/

MODULE_LICENSE("Dual BSD/GPL");          /*没有版本限制,遵循GPL协议。必须有*/
MODULE_AUTHOR("TOPEET");

static int hello_init(void)
{
	printk(KERN_EMERG "HELLO WORLD enter!\n"); /*printk():内核的打印 
												KERN_EMERG:紧急权限*/
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_EMERG "HELLO WORLD exit!\n");
	
}

module_init(hello_init);          /*入口函数,输入是函数名*/
module_exit(hello_exit);          /*出口函数*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值