linux驱动开发第二步 驱动模块传参(module_param函数使用)
在驱动的模块中声明一下你要传递的参数名称,类型和权限
module_param(变量的名称,类型,权限);
先上例子
#include <linux/init.h>
#include <linux/module.h> static char *p_name = "Usr";
module_param(p_name, charp, S_IRUGO);
MODULE_PARM_DESC(p_name, "This is a char * string."); static int __init hi_init(void)
{
printk(KERN_INFO "Hi enter %s\n",p_name);
return ;
}
module_init(hi_init); static void __exit hi_exit(void)
{
printk(KERN_INFO "Hi exit %s\n ",p_name);
}
module_exit(hi_exit); MODULE_AUTHOR(" libra13179 ");
MODULE_LICENSE("GPL v2");
KVERS = $(shell uname -r) # Kernel modules
obj-m += hi.o # Specify flags for the module compilation.
#EXTRA_CFLAGS=-g -O0 build: kernel_modules kernel_modules:
make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules
# @echo $(KVERS) clean:
make -C /lib/modules/$(KVERS)/build M=$(CURDIR) clean
不设置时候使用默认的
root@lin-virtual-machine:/home/lin/hi# insmod ./hi.ko
root@lin-virtual-machine:/home/lin/hi# cat /var/log/syslog | grep Hi
...
Jul :: lin-virtual-machine kernel: [ 203.238178] Hi enter Usr
...
使用设置时候
root@lin-virtual-machine:/home/lin/hi# insmod hi.ko p_name='God'
加载模块后,都会在/sys/modules下生成一个模块的文件夹,文件夹下会有一个parameters文件夹,
里面包含的就是以参数名命名的文件节点,里面保存的就是我们设置的值,例如在p_name中
root@lin-virtual-machine:/home/lin/hi# cat /sys/module/hi/parameters/p_name
God
linux驱动开发第二步 驱动模块传参(module_param函数使用)的更多相关文章
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- Linux驱动开发必看详解神秘内核(完全转载)
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入L ...
- 嵌入式Linux驱动开发日记
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- 【转】linux驱动开发的经典书籍
原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书 ...
- Linux驱动开发 -- 打开dev_dbg()
Linux驱动开发 -- 打开dev_dbg() -- :: 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KER ...
- Linux驱动开发学习的一些必要步骤
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...
- Android系统移植与驱动开发——第六章——使用实例来理解Linux驱动开发及心得
Linux驱动的工作方式就是交互.例如向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件,在使用C语言函数ioctl向该驱动的设备文件发送打印命令.编写Linux驱动最 ...
- 驱动编程思想之初体验 --------------- 嵌入式linux驱动开发之点亮LED
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
随机推荐
- C++11--20分钟了解C++11 (上)
20分钟了解C++ 11 1 初始化列表 Initializer List //C++ 03中用初始化列表初始化数组 int arr[4] = {3, 2, 4, 5}; vector<int& ...
- Hadoop概念学习系列之谈hadoop/spark里分别是如何实现容错性?(四十二)
Hadoop使用数据复制来实现容错性(I/O高) Spark使用RDD数据存储模型来实现容错性. RDD是只读的.分区记录的集合.如果一个RDD的一个分区丢失,RDD含有如何重建这个分区的相关信息. ...
- Java学习——使用Static修饰符
程序功能:通过两个类 StaticDemo.LX4_1 说明静态变量/方法与实例变量/方法的区别. package Pack1; public class Try { public static vo ...
- Java-Runoob-高级教程-实例-方法:08. Java 实例 – break 关键字用法
ylbtech-Java-Runoob-高级教程-实例-方法:08. Java 实例 – break 关键字用法 1.返回顶部 1. Java 实例 - break 关键字用法 Java 实例 Ja ...
- 在CentOS6的上安装Windows2012R2的KVM虚拟机
在CentOS6的上安装Windows2012R2的KVM虚拟机 1:上传cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso下载驱 ...
- Zabbix 调整告警发送的内容格式
在配置动作区域 可以设置报警内容格式进行调整 原先告警内容 修改内容为: 后显示效果
- Jmeter(五)录制功能
难得休息时间,和开发对完需求便理着Jmeter的知识的相关体系,趁闲暇功夫就记一点,希望这么坚持下去,能有很多关于Jmeter的知识点被总结,被挖掘出来,从而形成自己的一套知识体系..... 嗯,那本 ...
- [UE4]多播(广播)
只有服务器才有权限做广播,所以要判断确保是服务器端才做广播,有以下几种方法: 一.使用“Switch Has Authority”判断是否在服务器端 因为character一定是在服务器端创建出来的, ...
- 关于android中透明、半透明、百分比转换
在xml文件中,可以直接写#0000,这个是全透明的效果.#9000这个值相当于56%的样子,因为颜色值是16进制的,#9000相当于(9/16)而百分比的话,大家可以按照这个比例来换算全透明 #00 ...
- java 获取两个日期之间的所有天数
Calendar start = Calendar.getInstance(); start.set(2017, 2, 20); Long startTIme = start.getTimeInMil ...