"); //-->
验证驱动模块 -- 模块相关的命令
插入或者加载一个模块sudo insmod hello.ko
在包含有hello.ko的目录执行这个命令,就会将这个hello模块插入到你当前运行的内核(ubuntu系统或者开发板)中,并且执行你的入口函数hello_init,这时有些同学会发现,执行完插入模块的命令后,没有执行printk打印,其实是执行了,只不过是打印到了缓存里面,我们需要用下面的命令查看打印信息:
查看printk打印信息dmesg //查看系统从开机到当前时刻由printk输出到缓存的所有log
sudo dmesg -c //查看显示log信息,并将整个缓存清除掉
sudo dmesg -C //不显示log信息,将整个缓存清除掉
看到log信息后,如何确认模块是否真正插入成功?
查询内核中插入的所有模块lsmod
//如果显示的模块太多,我们可以通过lsmod | grep hello 这个命令来查看是否有hello这个模块
当我不需要这个模块时,如何从内核中将这个模块卸载掉?
卸载模块sudo rmmod hello
//注意,模块名字时hello,那么执行这个卸载命令的时候,就会执行我们的卸载函数hello_exit,通过dmesg可以看到对应的log,通过lsmod可以发现没有hello这个模块了。
有同学看到打印信息后会有个疑问,为什么卸载模块的时候,竟然有hello_init的log,这个地方我解释下,前面说过,printk是把打印信息输出到缓存中,也就是说,每次执行dmesg的时候,是将整个缓存的log都打印出来了,所以hello_init这个log是执行insmod加载模块的时候打印的。
查看模块信息modinfo hello.ko
这些命令只要你敲的多了,自然就牢记于心了,初学者还是要勤加练习。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。