十三、linux 内核驱动模块传参数
在加载模块的时候,可以向它传参数。
单个参数:
内核模块可以通过module_param来传单个参数
– module_param(name,type,perm)
– name:模块参数的名称
– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)
– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读)
– 头文件在“include/linux/moduleparam.h”
多个参数:
传递多个参数module_param_array(name, type, nump, perm)
– name:模块参数的名称
– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)
– nump:保存参数个数的地址
– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读)
• 参数perm表示此参数在sysfs文件系统中所对应的文件节点的属性,其权限在include/linux/stat.h中有定义。
• 变量perm
– #defineS_IRUSR 00400文件所有者可读
– #defineS_IWUSR00200文件所有者可写
– #defineS_IXUSR 00100文件所有者可执行
– #defineS_IRGRP00040与文件所有者同组的用户可读
– #defineS_IWGRP00020
– #defineS_IXGRP 00010
– #defineS_IROTH 00004与文件所有者不同组的用户可读
– #defineS_IWOTH00002
– #defineS_IXOTH 00001
• 将数字最后三位转化为二进制:xxx xxx xxx,高位往低位依次看,第一位为1表示文件所有者可读,第二位为1表示文件所有者可写,第三位为1表示文件所有者可执行;接下来三位表示文件所有者同组成员的权限;再下来三位为不同组用户权限。
#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;module_param(module_arg1,int,S_IRUSR);module_param(module_arg2,int,S_IRUSR);module_param_array(int_array,int,&int_num,S_IRUSR);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");
}module_init(hello_init);
/*初始化函数*/
module_exit(hello_exit);
/*卸载函数*/
十三、linux 内核驱动模块传参数相关推荐
- 《Linux内核驱动模块编程指南》
Foreword Table of Contents 作者声明 版本和注意 感谢 译者注 作者声明 <Linux内核驱动模块编程指南>最初是由Ori Pomerantz为2.2版本的内核编 ...
- linux内核驱动模块开发步骤及实例入门介绍
最近在搞一个linux的项目,其中主要是在编写一些应用模块,对内核及其驱动模块涉及很少,遇到了一些驱动模块的问题时,临时查了些资料,大致了解了一下驱动模块开发的基本步骤和常规步骤,并从网上也收集到了一 ...
- xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- linux 内核调整相关参数
linux 内核调整相关参数 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies.当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认 ...
- linux内核驱动模块开发makefile实例解析
昨天整理了一篇关于linux内核驱动模块的开发介绍入门,其中介绍了一些关于驱动模块的基本开发步骤,不过面广而不深,很多细节都没有涉及到,其中就包括如何编写驱动模块的makefile.那么,今天我们就来 ...
- u-boot向linux内核传递启动参数
U-BOOT 在启动内核时,会向内核传递一些参数.而这些参数是通过 structtag来传递的. U-boot 把要传递给 kernel 的东西保存在 struct tag数据结构中,启动 kerne ...
- Linux内核驱动模块示例--Helloword及Makefile
先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...
- linux的memmap函数_究竟有多少linux内核命令行参数
linux启动时可以带命令行参数,这些参数会影响内核乃至启动脚本的行为.在内核中,用early_param(命令行参数名称,命令行参数处理函数)来注册.除了内核参数,还可以有其他的命令行参数,各自有自 ...
- linux内核enforcing引导参数
enforcing参数是在启动内核时传递给selinux的内核参数,它用来决定你系统的内核运行于 强制(enforcing )模式还是自由(permissive) 模式. 在自由模式下SELinux只 ...
最新文章
- 服务器虚拟化改写存储演进图
- visual studio 2008 html中调用外部css文件,的Visual Studio 2008 IDE冻结/崩溃打开.aspx文件中使用CSS时包括...
- 冒泡排序选择排序 以及时间效率对比
- c 语言登录系统源代码,c语言源代码---------------个人图书管理系统
- OpenCV之邻域运算之最值滤波
- 【笔记】Windows Phone 8开发笔记之API
- 驱动人生安装驱动计算机无法启动,驱动人生打开时出错怎么办
- CentOS7.3安装Nginx
- LINUX使用C调用LMDB的方法
- HTML5+CSS大作业——清新春暖花开个人博客网站(6页)
- Android 学习过程中遇到的知识点
- TWaver GIS制作穹顶之下的雾霾地图
- java计算机毕业设计学校食堂订餐管理源码+数据库+系统+lw文档+部署
- RAID5磁盘阵列搭建——新手上路
- GitHub Ribbons
- E.03.09 China Tried to Slow Divorces by Making Couples Wait. Instead, They Rushed.
- 数值分析思考题(钟尔杰版)参考解答——第八章
- 〖3D激光点云〗激光雷达点云bin文件读取和显示!
- 2022年全网最详细的Fiddler抓包总结
- LTE学习笔记--PHY--RSRP、RSRQ、RSSI和SINR