也可通过 modinfo 命令进一步检查 :
文章插图
5.插入模块通过 insmod 命令插入模块 , 完成插入后可通过 lsmod 命令查看当前模块是否已经被加载到系统中:
文章插图
系统加载模块后 , 也会在“/sys/module”目录下新建以模块名命名的目录 :
文章插图
6.查看输出因 本 演示 中 prink()采 用 默认 输出 等级 , 可 通 过“ dmesg” 或“ tail /var/log/kern.log”命令查看输出结果 。
文章插图
“ tail /var/log/kern.log”命令查看输出结果:
文章插图
7. 卸载模块卸载模块 , 可通过“rmmod 模块名”实现 , 通 过“ tail /var/log/kern.log”命令查看输出结果 。
文章插图
二、 模块参数1.说明【教你编写你的第一个Linux 内核模块“hello_module”】Linux 内核提供一个宏来实现模块的参数传递
#define module_param(name, type, perm) module_param_named(name, name, type, perm)#define MODULE_PARM_DESC(_parm, desc) _MODULE_INFO(parm, _parm, #_parm ":" desc);
module_param()宏由 3 个参数组成 , name 表示参数名 , type 表示参数类型 , perm 表示参数读写权限 。MODULE_PARM_DESC()宏提供参数的简单说明 , 参数类型可为 byte、short、int、long、char、bool 等类型;perm 指定在 sysfs 中相应文件的访问权限 , 如设置为 0 则不会出现在 sysfs 文件系统中 , 设置为 0644 标识 root 用户可修改本参数 。
static int debug = 1;module_param(debug, int, 0644);MODULE_PARM_DESC(debug, "enable debugging information");#define dprintk(args...) if(debug){printk(KERN_DEBUG args);}
如上述实际代码所示(driver/misc/altera-stap1/altera.c) , 实际定义模块参数 debug,类型是 int,访问权限是 0644 。参数用途是大概调试信息 , 实际内核编程中常用此方法进行内核调试 。2.开始动手修改上文中的“hello_module.c”文件 , 改为以下内容:
//hello_module.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>static int debug = 1;module_param(debug, int, 0644);MODULE_PARM_DESC(debug, "debugging information");#define dprintk(args...) if(debug){printk(KERN_DEBUG args);}static int myparm = 10;module_param(myparm, int, 0644);MODULE_PARM_DESC(myparm, "kernel module parameter experiment.");static int __init parm_init(void){dprintk("my linux kernel module init.n");dprintk("module parameter = %dn", myparm);return 0;}static void __exit parm_exit(void){printk("see you next time!n");}module_init(parm_init);module_exit(parm_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("Mr Q");MODULE_DESCRIPTION("kernel module paramter experiment");MODULE_ALIAS("myparm");
make编译 , 装载模块 , 并查看输出:文章插图
通过查看日志信息 , 可发现输出以上程序中 参数 的默认值 。卸载模块 , 赋值重新加载模块,修改参数 myparm 值为 116:
insmod parm_module.ko myparm=116
文章插图
通过查看日志信息 , 可发现 参数 值已经改变 。
推荐阅读
- 要给五脏及时排毒 教你穴位按摩排毒法
- 柑普茶怎么煮,教你若何更好冲泡柑普茶
- 女生把你当朋友和喜欢你的区别是什么?
- 国庆节祝福语有哪些?
- 在淘宝买东西让朋友代付能看到你的地址么 淘宝朋友代付会不会看到地址
- 使用 fail2ban 和 FirewallD 黑名单保护你的系统
- 淘宝会被店家屏蔽吗 淘宝店铺被屏蔽了别人还能购买你的东西吗
- 柑普茶的饮用方法,教你若何更好冲泡柑普茶
- linux内核驱动第1讲:带你编写一个最简单的字符设备驱动
- 北京43所学校入选2020年度“全国青少年人工智能活动特色单位”!快来看看有你的学校吗?