module_param 用于动态开启/关闭 驱动打印信息
1.定義模塊參數(shù)的方法:
module_param(name, type, perm);
其中,name:表示參數(shù)的名字; ???? type:表示參數(shù)的類型; ???? perm:表示參數(shù)的訪問權(quán)限;
type參數(shù)設(shè)定的類型和perm的訪問權(quán)限具體數(shù)值數(shù)值請(qǐng)參考內(nèi)核定義。
?
2、可以在insmod(裝載模塊)的時(shí)候?yàn)閰?shù)指定值,如果沒有指定則使用默認(rèn)值
static int num=10; module_param(num,int,S_IRUGO); static int hello_init(void) {printk("Hello module init./n");printk("num=%d/n",num);return 0; } static void hello_exit(void) {printk("Goodbye module exit./n"); } module_init(hello_init); module_exit(hello_exit);MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("a simple module"); MODULE_ALIAS("hello");
上面的num=10,則10是參數(shù)num的默認(rèn)值。
保存為源文件hello.c, 編譯生成hello.ko , 當(dāng)我們使用insmod進(jìn)行載入時(shí), 使用
insmod hello.ko num=20
則可以 cat /sys/module/hello/parameters/num ,看到為 20
3、驅(qū)動(dòng)的打印調(diào)試信息正常情況下我們并不希望看到,但是出現(xiàn)錯(cuò)誤的情況下還是需要查看的,可使用以下方法:
static int num=0; module_param(num,int,S_IRUGO);/* 驅(qū)動(dòng)運(yùn)行中調(diào)用的操作 */ int fun_test() {if(num){printk("This is a test!\n");} }static int hello_init(void) {printk("Hello module init./n");printk("num=%d/n",num);return 0; } static void hello_exit(void) {printk("Goodbye module exit./n"); } module_init(hello_init); module_exit(hello_exit);MODULE_LICENSE("Dual BSD/GPL"); MODULE_DESCRIPTION("a simple module"); MODULE_ALIAS("hello");
默認(rèn)運(yùn)行中不會(huì)出現(xiàn)打印信息“This is a test”。
查看 /sys/modules/hello/parameters/num參數(shù),默認(rèn)數(shù)值是0,
echo 1 > /sys/modules/hello/parameters/num #打開調(diào)試信息打印 echo 0 > /sys/modules/hello/parameters/num #關(guān)閉調(diào)試信息打印
以上操作即可以實(shí)現(xiàn)動(dòng)態(tài)關(guān)閉/打開調(diào)試信息
?
轉(zhuǎn)載于:https://www.cnblogs.com/FarmPick/p/9003612.html
總結(jié)
以上是生活随笔為你收集整理的module_param 用于动态开启/关闭 驱动打印信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到很多大便很恶心
- 下一篇: amazeui学习笔记--css(基本样