linux param指的是“module_param”函数,其作用是传递命令行参数;在用户态下编程可以通过“main()”的参数来传递命令行参数,而编写一个内核模块则通过“module_param()”来传递参数。
本教程操作环境:linux5.9.8系统、Dell G3电脑。
linux param是什么?
linux驱动之module_param的用法
从 main函数说起
我们在用户态写程序时都喜欢用main函数的如果参数来向程序内传递数据
#include <stlib.h> #include <stdio.h> int main(int argc,char **argv) { exit(0); }
其中argc为传入程序内参数的个数,argv为传入的参数 ,其中的第一个参数argv[0]为当前文件的含路径的名字,所以实际传入程序内的参数个数为argc-1个。
内核模块传入参数
内核模块中没有main函数,所以向模块内部传入参数可以通过module_param这个宏定义来实现:
// 原型 #define module_param(name, type, perm) \ module_param_named(name, name, type, perm)
name:传入参数名称
type:传入参数类型,有byte, short, ushort, int, uint, long, ulong, charp, bool,invbool这几种类型
perm:这个为sysfs中资源的访问权限,下面再细说,主要有以下权限类型在uapi/linux/stat.h中定义
#define S_IRWXU 00700 // 用户读写可执行权限 #define S_IRUSR 00400 // 用户读权限 #define S_IWUSR 00200 // 用户写权限 #define S_IXUSR 00100 // 用户可执行权限 #define S_IRWXG 00070 // 用户组读写可执行权限 #define S_IRGRP 00040 // 用户组读权限 #define S_IWGRP 00020 // 用户组写权限 #define S_IXGRP 00010 // 用户组可执行权限 #define S_IRWXO 00007 // 其他人可读写执行权限 #define S_IROTH 00004 // 其他人可读权限 #define S_IWOTH 00002 // 其他人可写权限 #define S_IXOTH 00001 // 其他人可执行权限
模块 代码编写:
#include <linux/module.h> int num = 100; module_param(num,int,S_IRUSR); static int __init param_init(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num); return 0; } static void __exit param_exit(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num) } module_init(param_init); module_exit(param_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Chen");
Makefile文件:
ifneq ($(KERNELRELEASE),) obj-m:=param.o else KERNEL_DIR:=/lib/modules/$(shell uname -r)/build CURRENT_DIR:=$(shell pwd) ccflags-y:=-std=gnu99 -Wno-declaration-after-statement all: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules clean: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean endif
编译 程序,安装模块,然后dmesg
模块安装后在/sys/module文件夹下会生成 对应模块名字的文件夹,进入文件夹内
进入文件夹,文件夹内parameters文件夹内会会有之前程序中的num
从图片中可以看出内核在文件系统中会生成对应的文件让用户访问,并且模块中module_param宏定义中的perm设置了用户只读权限,所以num文件权限与其对应。
当然你也可以设置可写权限来改变输入参数 的值,改变后内核模块中的 该 参数会改变但是不会有任何信息提示。
相关推荐:《Linux视频教程》
以上是linux param是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

在Debian系统上使用OpenSSL进行数字签名验证,可以按照以下步骤操作:准备工作安装OpenSSL:确保你的Debian系统已经安装了OpenSSL。如果没有安装,可以使用以下命令进行安装:sudoaptupdatesudoaptinstallopenssl获取公钥:数字签名验证需要使用签名者的公钥。通常,公钥会以文件的形式提供,例如public_key.pe

要检查Debian系统上OpenSSL版本的安全性,您可以按照以下步骤操作:打开终端:在Debian系统上打开终端。更新包列表:确保您的包列表是最新的,运行以下命令:sudoaptupdate检查OpenSSL版本:使用以下命令来检查当前安装的OpenSSL版本:opensslversion检查已知漏洞:您可以使用openssls_client命令来测试与

在Debian系统上配置HTTPS服务器涉及几个步骤,包括安装必要的软件、生成SSL证书、配置Web服务器(如Apache或Nginx)以使用SSL证书。以下是一个基本的指南,假设你使用的是ApacheWeb服务器。1.安装必要的软件首先,确保你的系统是最新的,并安装Apache和OpenSSL:sudoaptupdatesudoaptupgradesudoaptinsta

更新OpenSSL是确保系统安全性的重要步骤,但在进行更新时,需要注意以下几点以确保更新过程顺利且系统不受影响:更新前的准备备份重要数据:在进行任何系统更新之前,务必备份重要数据,以防更新过程中出现问题导致数据丢失。检查当前OpenSSL版本:了解当前OpenSSL的版本和已知的安全漏洞,以便选择合适的更新版本。依赖关系检查:确保系统上安装了所有必要的依赖包,以避免更新失败。更新步骤

Debian本身是一个Linux发行版,而Hadoop是一个分布式系统基础架构,通常不与特定的Linux发行版绑定在一起使用。因此,提到“DebianHadoop容错机制”可能是不准确的,因为Hadoop的容错机制是Hadoop自身设计的一部分,与Debian发行版无直接关联。不过,我可以解释Hadoop的容错机制是如何工作的。Hadoop的容错机制是其高可用性和稳定性的关键,主要包括以下几个方

在Debian系统下配置GitLab涉及多个步骤,包括安装必要的依赖项、下载和安装GitLab软件包、配置GitLab以及启动服务。以下是一个详细的配置指南:一、准备工作更新系统包:sudoapt-getupdatesudoapt-getupgrade安装依赖项:sudoapt-getinstall-ycurlopenssh-serverca-certifi

在Debian上提高Hadoop数据本地化可以通过以下几种方法实现:均衡硬件资源:确保HDFS集群中各个DataNode节点的硬件资源(如CPU、内存、磁盘容量等)相近,避免出现明显的性能瓶颈。优化数据写入策略:合理配置HDFS的数据写入策略,如根据节点的负载情况和可用资源动态选择DataNode节点进行存储,以实现数据的均衡分布。使用Balancer工具:利用HD

在Debian系统中,GitLab的资源占用情况是一个重要的考量因素,特别是在进行高负载操作如CI/CD时。以下是对GitLab资源占用情况的详细分析和建议:资源占用概况CPU使用率:GitLab运行后,CPU的平均使用率可能保持在30%左右,但在高负载情况下,如频繁的CI/CD操作,CPU使用率可能会飙升。内存使用率:内存使用率通常保持在75%左右,一旦有人开始访问GitLab页面进行操作


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Dreamweaver Mac版
视觉化网页开发工具