嵌入式之Linux驱动(二)

姓名:郑煜烁 学号:19029100010 学院:电子工程学院

转自:https://blog.csdn.net/u012142460/article/details/78884144

【嵌牛导读】简单介绍linux驱动中模块传参

【嵌牛鼻子】linux驱动模块传参

【嵌牛提问】驱动模块如何传参

【嵌牛正文】

在编写应用我们可以通过终端向main函数传参,其实在驱动模块中我们同样可以传参,但需要遵从一定的格式要求。

在驱动的模块中声明一下你要传递的参数名称,类型和权限

        module_param(变量的名称,类型,权限);

传递整型:

        int intval ;

        module_param(intval, int , 0664);

传递字符指针:这个稍微特殊一点,参数类型设定为charp

      char *p = NULL;

      module_param(p, charp, 0664);

传递数组: module_param_array(数组名, 元素类型, 元素个数(取地址), 权限);

        int array[3] = {};

        int num = 3;

        module_param_array(array, int, &num, 0664);

传递字符串: module_param_string(传递参数时的字符串名称, 字符串名称, 字符串大小, 权限);

        char str[12] = {};

        module_param_string(estr, str, sizeof(str), 0664);

        前两个参数容易混淆,第二个是在程序中的名称,第一个是你在传递参数的名称,一般可以起一样的名字。

另外还可以添加参数描述,如:

              MODULE_PARM_DESC(参数名称, 参数描述);

例程:

#include <linux/init.h>

#include <linux/module.h>

#include <linux/kernel.h>

MODULE_LICENSE("GPL");

int intval = 0;

module_param(intval, int , 0664);

MODULE_PARM_DESC(intval, "This is a interger.");

char *p = NULL;

module_param(p, charp, 0664);

MODULE_PARM_DESC(p, "This is a char * string.");

int array[3] = {};

int num = 3;

module_param_array(array, int, &num, 0664);

MODULE_PARM_DESC(array, "This is a array.");

char str[12] = {};

module_param_string(estr, str, sizeof(str), 0664);

MODULE_PARM_DESC(estr, "This is a char[] array.");

static int __init demo_init(void)

{

int i = 0;

printk("%s,%d\n", __func__, __LINE__);

printk("intval:%d\n", intval);

printk("p:%s\n", p);

for(i = 0; i < num; i++)

{

printk("array[%d] = %d\n", i, array[i]);

}

printk("str:%s\n", str);

return 0;

}

static void __exit demo_exit(void)

{

printk("%s,%d\n", __func__, __LINE__);

}

module_init(demo_init);

module_exit(demo_exit);

我们看一下执行结果


来源 CSDN

      加载模块后,都会在/sys/modules下生成一个模块的文件夹,文件夹下会有一个parameters文件夹,里面包含的就是以参数名命名的文件节点


来源 CSDN

里面保存的就是我们设置的值,例如在intval中

来源 CSDN

————————————————

版权声明:本文为CSDN博主「念念有余」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u012142460/article/details/78884144

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容