您好,欢迎访问一九零五行业门户网

linux param是什么

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.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
模块安装后在/sys/module文件夹下会生成 对应模块名字的文件夹,进入文件夹内
进入文件夹,文件夹内parameters文件夹内会会有之前程序中的num
从图片中可以看出内核在文件系统中会生成对应的文件让用户访问,并且模块中module_param宏定义中的perm设置了用户只读权限,所以num文件权限与其对应。
当然你也可以设置可写权限来改变输入参数 的值,改变后内核模块中的 该 参数会改变但是不会有任何信息提示。
相关推荐:《linux视频教程》
以上就是linux param是什么的详细内容。
其它类似信息

推荐信息