搜索
首页运维linux运维linux param是什么

linux param是什么

Mar 10, 2023 am 08:58 AM
linuxparam

linux param指的是“module_param”函数,其作用是传递命令行参数;在用户态下编程可以通过“main()”的参数来传递命令行参数,而编写一个内核模块则通过“module_param()”来传递参数。

linux 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
0f349fedcb8afdf5c095367c9545283.jpg

模块安装后在/sys/module文件夹下会生成 对应模块名字的文件夹,进入文件夹内
6bb68f4d88ae08033c7deded88b80dd.jpg

进入文件夹,文件夹内parameters文件夹内会会有之前程序中的num

1a08ab4dba0304e7d08248500af8141.jpg

2ef37815d8a8a2ab50b3aa344d152af.jpg

从图片中可以看出内核在文件系统中会生成对应的文件让用户访问,并且模块中module_param宏定义中的perm设置了用户只读权限,所以num文件权限与其对应。
当然你也可以设置可写权限来改变输入参数 的值,改变后内核模块中的 该 参数会改变但是不会有任何信息提示。

相关推荐:《Linux视频教程

以上是linux param是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Debian OpenSSL如何进行数字签名验证Debian OpenSSL如何进行数字签名验证Apr 13, 2025 am 11:09 AM

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

如何检查Debian OpenSSL版本安全性如何检查Debian OpenSSL版本安全性Apr 13, 2025 am 11:06 AM

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

Debian OpenSSL如何配置HTTPS服务器Debian OpenSSL如何配置HTTPS服务器Apr 13, 2025 am 11:03 AM

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

Debian OpenSSL更新有哪些注意事项Debian OpenSSL更新有哪些注意事项Apr 13, 2025 am 11:00 AM

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

Debian Hadoop容错机制是怎样工作的Debian Hadoop容错机制是怎样工作的Apr 13, 2025 am 10:57 AM

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

Debian系统下GitLab配置指南Debian系统下GitLab配置指南Apr 13, 2025 am 10:54 AM

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

Debian Hadoop数据本地化如何提高Debian Hadoop数据本地化如何提高Apr 13, 2025 am 10:51 AM

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

Debian系统中GitLab的资源占用情况Debian系统中GitLab的资源占用情况Apr 13, 2025 am 10:48 AM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

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

螳螂BT

螳螂BT

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

安全考试浏览器

安全考试浏览器

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

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具