在加载一个.ko模块时,也可以像应用程序那样,通过命令行传入一些参数,这个过程发生在调用模块初始化函数之前。
内核支持的参数类型有:bool
、invbool
(反转值bool类型)、charp
(字符串指针)、short
、int
、long
、ushort
、uint
、ulong
。这些类型又可以复合成对应的数组类型。
具体用法,在驱动中定义三个变量baudrate
、port
、name
:
static int baudrate = 9600;
static int port[4] = {0,1,2,3};
static char *name = "user";
module_param(baudrate, int, S_IRUGO);
module_param_array(port, int, NULL, S_IRUGO);
module_param(name, charp, S_IRUGO);
使用module_param
和module_param_array
宏声明这些变量为模块参数。说明:
module_param(name,type,perm)
module_param_array(name,type,nump,perm)
name
:变量的名字
type
:变量或数组元素的类型
nump
:数组元素个数的指针,可选
perm
:在sysfs文件系统中对应文件的权限属性。
权限的取值参考
头文件。
修改这三个变量的值,即加载模块时传参:
insmod user.ko baudrate=115200 port=1,2,3,4 name="virtual-serial"
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
模块
+关注
关注
7文章
2705浏览量
47463 -
内核
+关注
关注
3文章
1372浏览量
40288 -
驱动
+关注
关注
12文章
1840浏览量
85286 -
Linux
+关注
关注
87文章
11303浏览量
209436
发布评论请先 登录
相关推荐
Linux 内核模块工作原理及内核模块编译案例
一个内核模块至少包含两个函数,模块被加载时执行的初始化函数init_module()和模块被卸载时执行的结束函数cleanup_module()。
发表于 09-23 09:39
•2505次阅读
Linux内核模块间通讯方法
Linux内核模块间通讯方法非常的多,最便捷的方法莫过于函数或变量符号导出,然后直接调用。默认情况下,模块与模块之间、模块与
发表于 06-07 16:23
•2553次阅读
Linux内核模块与应用程序的对比
用户态程序Linux内核模块运行用户空间 内核空间 入口main() module_init()指定; 出口无 module_exit()指定; 编译gcc –cMakefile 连接
发表于 07-03 03:15
高效学习Linux内核——内核模块编译
情况下,内核模块应遵循GPL 兼容许可权。Linux2.6 内核模块最常见的是以MODULE_LICENSE(“Dual BSD/GPL”)语句声明模块采用BSD/GPL 双LICEN
发表于 09-24 09:11
如何在Petalinux创建Linux内核模块?
--enable”,能创建Linux内核模块,包括c源代码文件,Makefile,Yocto的bb文件。相关文件放在目录“ project-spec / meta-user / recipes-modules”中
Linux内核模块参数传递与sysfs文件系统
函数传参的内核传参机制,编写内核程序时只要实现传参接口,用户在加载内核模块时即可传入指定参数,使得内核模块更加灵活。
发表于 06-07 16:23
•2135次阅读
linux驱动程序如何加载进内核
,需要了解Linux内核的基本概念和API。以下是一些关键概念: 1.1 内核模块:Linux内核模块是一种动态加载和卸载的代码,可以在不重
评论