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

Implementierung der kontinuierlichen Integration von Jenkins+Docker

Inhaltsverzeichnis 1. Einführung in Jenkins 2. Je...

Detaillierte Erklärung der Anwendung von CSS Sprite

CSS Sprite, auch bekannt als CSS Sprite, ist eine...

Mit CSS3 lässt sich ein umdrehbarer Hover-Effekt erzielen

CSS3 implementiert einen umdrehbaren Hover-Effekt...

Verstehen Sie die Implementierung des Nginx-Standortabgleichs in einem Artikel

Da das Team Front-End und Back-End trennt, überni...

Implementierung des gemeinsamen Grid-Layouts

Keine Lücken auf beiden Seiten, Lücken zwischen j...

So implementieren Sie eine Paging-Abfrage in MySQL

SQL-Paging-Abfrage:Hintergrund Im System des Unte...

Implementierung einfacher Tabs mit js

Tab-Auswahlkarten werden auf echten Webseiten seh...

3 Möglichkeiten zum Hinzufügen von Links zu HTML-Auswahl-Tags

Der Erste : Code kopieren Der Code lautet wie folg...

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...

Verwenden Sie three.js, um coole 3D-Seiteneffekte im Acid-Stil zu erzielen

In diesem Artikel wird hauptsächlich die Verwendu...

Detailliertes Installationstutorial für die MySQL-Zip-Archivversion (5.7.19)

1. Laden Sie die Zip-Archivversion von der offizi...