温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux param指的是什么

发布时间:2023-03-10 09:38:39 阅读:186 作者:iii 栏目:建站服务器
Linux服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

这篇文章主要介绍“linux param指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux param指的是什么”文章能帮助大家解决问题。

linux param指的是“module_param”函数,其作用是传递命令行参数;在用户态下编程可以通过“main()”的参数来传递命令行参数,而编写一个内核模块则通过“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.oelse	KERNEL_DIR:=/lib/modules/$(shell uname -r)/build	CURRENT_DIR:=$(shell pwd)	ccflags-y:=-std=gnu99 -Wno-declaration-after-statementall:	$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modulesclean:	$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) cleanendif

编译 程序,安装模块,然后dmesg
linux param指的是什么

模块安装后在/sys/module文件夹下会生成 对应模块名字的文件夹,进入文件夹内
linux param指的是什么

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

linux param指的是什么

linux param指的是什么

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

关于“linux param指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×