qu'est-ce que le paramètre Linux

藏色散人
Libérer: 2023-03-10 08:58:55
original
2683 Les gens l'ont consulté

linux param fait référence à la fonction "module_param", qui est utilisée pour transmettre les paramètres de ligne de commande ; dans la programmation en mode utilisateur, les paramètres de ligne de commande peuvent être transmis via les paramètres de "main()", et lors de l'écriture d'un module du noyau, passez "module_param( )" pour transmettre les paramètres.

qu'est-ce que le paramètre Linux

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Qu'est-ce que le paramètre Linux ?

Utilisation de module_param dans le pilote Linux

Commencez avec la fonction principale

Nous aimons tous utiliser le paramètre if de la fonction main lors de l'écriture de programmes en mode utilisateur Pour transférer des données vers le programme

#include <stlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
 exit(0);
}</stdio.h></stlib.h>
Copier après la connexion

où argc est le nombre de paramètres passés dans le programme, argv est le paramètre passé, et le premier paramètre argv[0] est le nom du fichier actuel incluant le chemin, donc le nombre réel de paramètres entrés dans le programme est argc-1.

Le module noyau passe les paramètres

Il n'y a pas de fonction principale dans le module noyau, donc la transmission des paramètres dans le module peut être réalisée via la définition de la macro module_param :

// 原型
#define module_param(name, type, perm)     \
		module_param_named(name, name, type, perm)
Copier après la connexion

name : le nom du paramètre entrant
type : le type du paramètre entrant, il en existe plusieurs types : byte, short, ushort, int, uint, long, ulong, charp, bool, invbool
perm : C'est l'autorisation d'accès aux ressources dans sysfs. Entrons dans les détails ci-dessous. . Il existe principalement les types d'autorisations suivants dans le module 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    // 其他人可执行权限
Copier après la connexion

défini dans linux/stat.h Écriture de code :

#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>
Copier après la connexion

Fichier 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
Copier après la connexion

Compilez le programme, installez le module, puis dmesg
quest-ce que le paramètre Linux

Après. le module est installé, le module correspondant sera généré dans le dossier /sys/module Nommez le dossier, entrez le dossier
quest-ce que le paramètre Linux

Entrez le dossier, il y aura num dans le programme précédent dans le dossier paramètres

quest-ce que le paramètre Linux

quest-ce que le paramètre Linux

Comme vous pouvez le voir sur l'image, le noyau est dans le système de fichiers. Les fichiers correspondants seront générés pour que les utilisateurs puissent y accéder, et le perm dans la définition de la macro module_param dans le module définit l'autorisation en lecture seule de l'utilisateur, donc le num les autorisations de fichiers y correspondent.
Bien sûr, vous pouvez également définir des autorisations d'écriture pour modifier la valeur du paramètre d'entrée. Après la modification, le paramètre dans le module du noyau changera mais il n'y aura aucune invite d'information.

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal