内核模块指定参数方式(2)

目标:输入一个数组,在模块内部按顺序输出

编写源码 #include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> static int len; static int buf[]={0,0,0,0,0,0,0,0,0,0}; module_param_array(buf,int, &len, S_IRUGO); static int __init parm_test(void) { int i = 0; printk("\nlen = %d\n",len); for(i=0;i<len;i++) printk(KERN_ALERT"%d\n",buf[i]); return 0; } static void __exit parm_exit(void) { printk(KERN_ALERT"GoodBye Kernel"); } module_init(parm_test); module_exit(parm_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Yuanye.Ma"); MODULE_DESCRIPTION("module param test");

Makefile 文件内容和实验一相同

查看模块信息 [root@localhost mod_parm]# modinfo parm_test.ko filename: parm_test.ko description: module param test author: Yuanye.Ma license: GPL srcversion: 83F9FF93EFA9D7495BD1290 depends: vermagic: 2.6.18-8.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1 parm: buf:array of int //数组参数 装载模块 [root@localhost mod_parm]# insmod parm_test.ko buf=1,2,3,4,5 [root@localhost mod_parm]# dmesg | tail len = 5 1 2 3 4 5 [root@localhost mod_parm]# rmmod parm_test.c [root@localhost mod_parm]# insmod parm_test.ko buf=1,2,3,4,5,6,7,8,9,0,1 //超过所初始化的元素个数的时候报错 insmod: error inserting 'parm_test.ko': -1 Invalid parameters //报错 [root@localhost mod_parm]# 实验三:

目标:bool 和 invbool测试

编写源码 #include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> static int boo=0; module_param(boo,bool,S_IRUGO); static int boo1=0; module_param(boo1,invbool,S_IRUGO); static int __init parm_test(void) { printk("\nboo= %d\n",boo); printk("boo1= %d\n",boo1); return 0; } static void __exit parm_exit(void) { printk(KERN_ALERT"GoodBye Kernel"); } module_init(parm_test); module_exit(parm_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Yuanye.Ma"); MODULE_DESCRIPTION("module param test");

Makefile 文件内容和实验一实验二都一样此处不再重复

装载模块 [root@localhost mod_parm]# insmod parm_test.ko boo=0 boo1=0 [root@localhost mod_parm]# dmesg | tail boo= 0 //boo 为bool变量 赋值为0 所以还是输出0 boo1= 1 //boo1 是invbool变量 赋值为0 自动反转为1

本文永久更新链接地址

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1b3836fe772a317159ec166ff06f1315.html