在加载模块的时候,可以向它传参数。

单个参数:

内核模块可以通过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 内核驱动模块传参数相关推荐

  1. 《Linux内核驱动模块编程指南》

    Foreword Table of Contents 作者声明 版本和注意 感谢 译者注 作者声明 <Linux内核驱动模块编程指南>最初是由Ori Pomerantz为2.2版本的内核编 ...

  2. linux内核驱动模块开发步骤及实例入门介绍

    最近在搞一个linux的项目,其中主要是在编写一些应用模块,对内核及其驱动模块涉及很少,遇到了一些驱动模块的问题时,临时查了些资料,大致了解了一下驱动模块开发的基本步骤和常规步骤,并从网上也收集到了一 ...

  3. xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持

    Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...

  4. linux 内核调整相关参数

    linux 内核调整相关参数 net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies.当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***,默认 ...

  5. linux内核驱动模块开发makefile实例解析

    昨天整理了一篇关于linux内核驱动模块的开发介绍入门,其中介绍了一些关于驱动模块的基本开发步骤,不过面广而不深,很多细节都没有涉及到,其中就包括如何编写驱动模块的makefile.那么,今天我们就来 ...

  6. u-boot向linux内核传递启动参数

    U-BOOT 在启动内核时,会向内核传递一些参数.而这些参数是通过 structtag来传递的. U-boot 把要传递给 kernel 的东西保存在 struct tag数据结构中,启动 kerne ...

  7. Linux内核驱动模块示例--Helloword及Makefile

    先看一个最简单的驱动程序: //hello.c #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE ...

  8. linux的memmap函数_究竟有多少linux内核命令行参数

    linux启动时可以带命令行参数,这些参数会影响内核乃至启动脚本的行为.在内核中,用early_param(命令行参数名称,命令行参数处理函数)来注册.除了内核参数,还可以有其他的命令行参数,各自有自 ...

  9. linux内核enforcing引导参数

    enforcing参数是在启动内核时传递给selinux的内核参数,它用来决定你系统的内核运行于 强制(enforcing )模式还是自由(permissive) 模式. 在自由模式下SELinux只 ...

最新文章

  1. 服务器虚拟化改写存储演进图
  2. visual studio 2008 html中调用外部css文件,的Visual Studio 2008 IDE冻结/崩溃打开.aspx文件中使用CSS时包括...
  3. 冒泡排序选择排序 以及时间效率对比
  4. c 语言登录系统源代码,c语言源代码---------------个人图书管理系统
  5. OpenCV之邻域运算之最值滤波
  6. 【笔记】Windows Phone 8开发笔记之API
  7. 驱动人生安装驱动计算机无法启动,驱动人生打开时出错怎么办
  8. CentOS7.3安装Nginx
  9. LINUX使用C调用LMDB的方法
  10. HTML5+CSS大作业——清新春暖花开个人博客网站(6页)
  11. Android 学习过程中遇到的知识点
  12. TWaver GIS制作穹顶之下的雾霾地图
  13. java计算机毕业设计学校食堂订餐管理源码+数据库+系统+lw文档+部署
  14. RAID5磁盘阵列搭建——新手上路
  15. GitHub Ribbons
  16. E.03.09 China Tried to Slow Divorces by Making Couples Wait. Instead, They Rushed.
  17. 数值分析思考题(钟尔杰版)参考解答——第八章
  18. 〖3D激光点云〗激光雷达点云bin文件读取和显示!
  19. 2022年全网最详细的Fiddler抓包总结
  20. LTE学习笔记--PHY--RSRP、RSRQ、RSSI和SINR

热门文章

  1. Struts2学习入门
  2. 建立可扩展的silverlight应用框架
  3. Oracle KFED 和 KFOD 工具说明
  4. 代码统计工具1.1版本技术文档
  5. Mathematica 对曲线进行拟合
  6. sqlserver表变量
  7. 802.11成帧封装实现(四)
  8. redis(nosql数据库)
  9. 通过 EXPLAIN 分析低效 SQL 的执行计划
  10. 前端学习01-04格式标签