Was ist Linux-Parameter?

藏色散人
藏色散人Original
2023-03-10 08:58:552714Durchsuche

linux param bezieht sich auf die Funktion „module_param“, die zum Übergeben von Befehlszeilenparametern verwendet wird; beim Programmieren im Benutzermodus können Befehlszeilenparameter über die Parameter von „main()“ übergeben werden, während das Schreiben eines Kernelmoduls „module_param( )“ übergibt. " um Parameter zu übergeben.

Was ist Linux-Parameter?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer. Was ist Linux-Parameter? im Benutzermodus Um Daten an das Programm zu übertragen

#include <stlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
 exit(0);
}</stdio.h></stlib.h>

wobei argc die Anzahl der an das Programm übergebenen Parameter ist, argv der übergebene Parameter ist und der erste Parameter argv[0] der Name der aktuellen Datei einschließlich des Pfads ist, also die tatsächliche Anzahl der in das Programm eingegebenen Parameter ist argc-1.

Das Kernel-Modul übergibt Parameter

Es gibt keine Hauptfunktion im Kernel-Modul, daher kann die Übergabe von Parametern an das Modul über die Makrodefinition module_param erreicht werden:
// 原型
#define module_param(name, type, perm)     \
		module_param_named(name, name, type, perm)
Name: der Name des eingehenden Parameters Typ : der Typ des eingehenden Parameters, es gibt verschiedene Typen: byte, short, ushort, int, uint, long, ulong, charp, bool, invbool perm: Dies ist die Zugriffsberechtigung auf Ressourcen in sysfs. Gehen wir weiter unten auf die Details ein . Es gibt hauptsächlich die folgenden Berechtigungstypen im uapi/
#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    // 其他人可执行权限
-Modul, das in linux/stat.h definiert ist. Code schreiben:

#include <linux>

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");</linux>
Makefile-Datei:
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

Kompilieren Sie das Programm, installieren Sie das Modul und dann dmesg

Danach Wenn das Modul installiert ist, wird das entsprechende Modul im Ordner /sys/module generiert. Benennen Sie den Ordner und geben Sie den Ordner ein

Wie Sie auf dem Bild sehen können, befindet sich der Kernel im Dateisystem. Es werden entsprechende Dateien generiert, auf die Benutzer zugreifen können, und die perm in der Makrodefinition module_param im Modul legt die schreibgeschützte Berechtigung des Benutzers fest, also die Anzahl Dateiberechtigungen entsprechen ihm.

Natürlich können Sie auch Schreibrechte festlegen, um den Wert des Eingabeparameters zu ändern. Nach der Änderung ändert sich der Parameter im Kernelmodul, es erfolgt jedoch keine Informationsaufforderung.



Verwandte Empfehlungen: „
Linux-Video-TutorialWas ist Linux-Parameter?

Das obige ist der detaillierte Inhalt vonWas ist Linux-Parameter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn