
上QQ阅读APP看书,第一时间看更新
3.6 实验3-2:“带参数的helloworld”模块
许多Linux可加载内核模块(LKM)都可以在加载时、系统启动时或者系统运行时设置其参数。在这个内核模块中,你将通过命令行提供模块加载时需要设置的参数。你也可以通过sysfs文件系统读取这些参数。
sysfs是Linux内核提供的一个虚拟文件系统。内核通过虚拟文件将内核设备模型中的各种内核子系统、硬件设备以及关联的设备驱动信息导出到用户态。除了提供关于各种设备以及内核子系统的信息,这些导出的虚拟文件也被用于对它们进行配置。
模块参数的定义通过module_param()
宏实现。

该驱动的主要代码段描述如下:
1. 在#include
语句之后,声明一个新的整型变量num
并在module_param()
宏中使用:

2. 修改hello_init()
函数中的pr_info
语句如下:

3. 在my_modules
工程中创建一个新文件helloword_with_parameters.c
。在Makefile
中将helloworld_with_parameters.o
添加到obj-m
变量。然后使用Eclipse构建并部署模块。

4. 在接下来的代码清单3-3中查看针对i.MX7D处理器的“带参数的helloworld”驱动源代码(helloworld_imx_with_parameters.c
)。
注意:针对SAMA5D2(helloworld_sam_with_parameters.c
)和BCM2837(helloworld_rpi_with_parameters.c
)的驱动源代码可以从本书的GitHub仓库下载。