Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

Deklarieren Sie den Parameternamen, den Typ und die Berechtigung, die Sie im Treibermodul übergeben möchten

module_param(Variablenname, Typ, Berechtigungen);

#include <linux/init.h>
#include <linux/module.h>

statisches Zeichen *p_name = "Usr";
module_param(p_name, charp, S_IRUGO);
MODULE_PARM_DESC(p_name, "Dies ist eine Zeichenfolge vom Typ char *.");

statische int __init hi_init(void)
{
  printk(KERN_INFO "Hallo, geben Sie %s\n ein",p_name);
  gebe 0 zurück;
}
module_init(hi_init);

statisches void __exit hi_exit(void)
{
  printk(KERN_INFO "Hallo, beende %s\n ",p_name);
}
modul_ausgang(hi_ausgang);

MODULE_AUTHOR("libra13179");
MODULE_LICENSE("GPL v2");
KVERS = $(shell uname -r)

# Kernelmodule
obj-m += hi.o

# Geben Sie Flags für die Modulkompilierung an.
#EXTRA_CFLAGS=-g -O0

Build: Kernelmodule

Kernelmodule:
  make -C /lib/modules/$(KVERS)/build M=$(CURDIR) Module
# @echo $(KVERS)

sauber:
  make -C /lib/modules/$(KVERS)/build M=$(CURDIR) sauber

Wenn nicht festgelegt, wird der Standardwert verwendet.

root@lin-virtual-machine:/home/lin/hi# insmod ./hi.ko
root@lin-virtual-machine:/home/lin/hi# cat /var/log/syslog | grep Hi
...
Jul 25 15:11:38 lin-virtual-machine kernel: [ 203.238178] Hi enter Usr
...

Bei Verwendung von Einstellungen

root@lin-virtual-machine:/home/lin/hi# insmod hi.ko p_name='Gott'

Nach dem Laden des Moduls wird unter /sys/modules ein Modulordner generiert und unter dem Ordner befindet sich ein Parameterordner.

Es enthält den nach dem Parameternamen benannten Dateiknoten, der den Wert speichert, den wir beispielsweise in p_name festlegen.

root@lin-virtual-machine:/home/lin/hi# cat /sys/module/hi/parameters/p_name
Gott

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Hinweise zur Speicherverwaltung von Linux-Kernel-Gerätetreibern
  • Hinweise zur Zeitverwaltung des Linux-Kernel-Gerätetreibers
  • Hinweise zum Zeichengerätetreiber des Linux-Kernel-Gerätetreibers
  • Hinweise zum virtuellen Dateisystem des Linux-Kernel-Gerätetreibers
  • Sortierung der technischen Hinweise zum Linux-Kernel-Gerätetreiber-Kernel-Debugging
  • Hinweise zur Verwendung der verknüpften Liste des Linux-Kernel-Gerätetreibers
  • Hinweise zum Proc-Dateisystem des Linux-Kernel-Gerätetreibers
  • Detaillierte Erklärung zum Schreiben von Linux-Kameratreibern

<<:  Zusätzliche Anweisungen zur Verwendung von Gettern und Aktionen in Vuex

>>:  Eine detaillierte Anleitung zu benutzerdefinierten Anweisungen in Vue

Artikel empfehlen

Methode zum Erstellen eines privaten Docker-Warehouses basierend auf Harbor

Inhaltsverzeichnis 1. Einführung in Harbor 1. Har...

Einführung in Kubernetes (k8s)

Ich wollte schon immer Kubernetes lernen, weil es...

Tutorial zum Verbinden und Verwenden von MySQL 8.0 im Maven-Projekt von IDEA

Schauen wir uns zunächst meine grundlegende Entwi...

js zur Realisierung eines Web-Musikplayers

Dieser Artikel enthält einfachen HTML- und Musikp...

Wichtige Updates für MySQL 8.0.23 (neue Funktionen)

Autor: Guan Changlong ist DBA in der Delivery Ser...

js, um einen gleitenden Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Beispielcode für Text-Origami-Effekt mit CSS3

Vorwort In diesem Artikel erfahren Sie hauptsächl...

Details zu gängigen Javascript-Funktionen höherer Ordnung

Inhaltsverzeichnis 1. Gemeinsame Funktionen höher...

So implementieren Sie die JavaScript-Ausgabe der Fibonacci-Folge

Inhaltsverzeichnis Thema analysieren Basislösung ...

Grundlegende Operationen an unsichtbaren Spalten in MySQL 8.0

Inhaltsverzeichnis 01 Unsichtbare Spalten erstell...

So finden Sie die my.ini-Konfigurationsdatei in MySQL 5.6 unter Windows

Machen Sie sich eine Notiz, damit Sie später dara...