讯为Exynos4412开发板例程及注释——驱动模块传递参数

来源:互联网 发布:ipad淘宝hd5.0.1版本 编辑:程序博客网 时间:2024/06/08 09:05

#include <linux/init.h>/*包含初始化宏定义的头文件,代码中的module_init和module_exit在此文件中*/#include <linux/module.h>/*包含初始化加载模块的头文件,代码中的MODULE_LICENSE在此头文件中*//*定义module_param module_param_array的头文件*/#include <linux/moduleparam.h>/*定义module_param module_param_array中perm的头文件*/#include <linux/stat.h>MODULE_LICENSE("Dual BSD/GPL");/*声明是开源的,没有内核版本限制*/MODULE_AUTHOR("iTOPEET_dz");/*声明作者*/static int module_arg1,module_arg2;static int int_array[50];static int int_num;/*需要注意的有如下三点:1、      必须包含头文件linux/moduleparam.h;2、      变量whom和howmany必须是全局变量;3、      调用module_param(whom, charp, S_IRUGO)和module_param(howmany, int, S_IRUGO)来对两个变量进行声明;*/module_param(module_arg1,int,S_IRUSR);module_param(module_arg2,int,S_IRUSR);module_param_array(int_array,int,&int_num,S_IRUSR);/*#define module_param(name,type,perm)  module_param_named(name,name,type,perm)-name 参数模块名称-type 模块参数数据类型-perm 模块参数访问权限(S_IRUSR:所有文件所有者可读)#define module_param_array(name,type,nump,perm)  module_param_array_named(name,name,type,nump,perm)*/static int hello_init(void){int i;printk(KERN_EMERG "module_arg1 is %d!\n",module_arg1);printk(KERN_EMERG "module_arg2 is %d!\n",module_arg2);for(i=0;i<int_num;i++){printk(KERN_EMERG "int_array[%d] is %d!\n",i,int_array[i]);}printk(KERN_EMERG "Hello World enter!\n");/*打印信息,KERN_EMERG表示紧急信息*/return 0;}static void hello_exit(void){printk(KERN_EMERG "Hello world exit!\n");}/*实验时如何输入命令呢?insmod /mnt/udisk/moudle_para,.ko module_arg1=10 module_arg=20 int_array=11,12,13,14,15*/module_init(hello_init);/*初始化函数*/module_exit(hello_exit);/*卸载函数*//*11 static char *msg;12 module_param(msg, charp, 0644);13 14 15 static int hello_init(void)16 {17     printk(KERN_ALERT "hello_init() start\n");18     printk(KERN_ALERT "%s\n", msg);19 20     return 0;21 }输入命令:insmod kernel_probe_param.ko msg="abcedfg"*/


阅读全文
0 0