Hinweise zum Proc-Dateisystem des Linux-Kernel-Gerätetreibers

Hinweise zum Proc-Dateisystem des Linux-Kernel-Gerätetreibers
/*****************
 * proc-Dateisystem*****************/

(1) Eigenschaften des /proc-Dateisystems und Beschreibung der /proc-Dateien

Das /proc-Dateisystem ist ein spezielles, von der Software erstelltes Dateisystem. Der Kernel verwendet es, um Informationen nach außen zu exportieren. Das /proc-System existiert nur im Speicher und belegt keinen externen Speicherplatz.

Jede Datei unter /proc ist an eine Kernelfunktion gebunden, die den Inhalt der Datei dynamisch generiert, wenn der Benutzer die Datei liest. Sie können Kernelparameter auch ändern, indem Sie /proc-Dateien schreiben

Dateianalyse unter dem Verzeichnis /proc /proc/$pid Informationsverzeichnis über den Prozess $pid. Jeder Prozess hat ein Verzeichnis unter /proc, das nach seiner Prozessnummer benannt ist. Beispiel: $>strings -f /proc/[0-9]*/cmdline

  • /proc/cmdline-Befehlszeile für den Kernel-Start
  • /proc/cpuinfo Prozessorinformationen wie Typ, Hersteller, Modell und Leistung.
  • /proc/devices listet die Hauptnummern der Zeichen- und Blockgeräte und die diesen Nummern zugewiesenen Gerätenamen auf.
  • /proc/dma zeigt die aktuell verwendeten DMA-Kanäle.
  • /proc/filesystems listet die verfügbaren Dateisystemtypen auf, normalerweise die im Kernel integrierten, aber neue Typen können über Module hinzugefügt werden.
  • /proc/interrupts zeigt die verwendete Interruptnummer, den Interruptnamen und die Häufigkeit, mit der diese Interrupts seit dem Systemstart aufgetreten sind.
  • /proc/ioports Aktuell verwendete E/A-Ports.
  • /proc/kallsyms Kernelsymboltabelle. Nach der Installation eines neuen Moduls wird es hier angezeigt
  • /proc/kcore Abbild des physischen Systemspeichers. Genau dieselbe Größe wie der physische Speicher, belegt aber nicht so viel Speicher (Denken Sie daran: Nichts unter /proc nimmt Speicherplatz ein, sofern es nicht in eine Datei kopiert wird).
  • /proc/kmsg Kernel-Ausgabemeldungen. Wird auch an Syslog gesendet.
  • /proc/loadavg Die durchschnittliche Auslastung des Systems. Die ersten drei sind die Auslastungen der letzten 1 Minute, 5 Minuten und 15 Minuten, gefolgt von der Anzahl der laufenden Tasks und der Gesamtanzahl der Tasks und schließlich der Prozessnummer des letzten Laufs.
  • /proc/meminfo Informationen zur Speichernutzung, einschließlich physischem Speicher und Swap.
  • /proc/modules Welche Kernmodule aktuell geladen sind.
  • /proc/partitions Die Partitionsinformationen der aktuell vom System gemounteten Festplatte
  • /proc/pci-System PCI-Bus-Informationen
  • /proc/net Statusinformationen zum Netzwerkprotokoll.
  • /proc/self Ein symbolischer Link zum Prozessverzeichnis von Programmen, die /proc anzeigen. Wenn zwei Prozesse /proc betrachten, handelt es sich um unterschiedliche Verbindungen. Dies ist vor allem für ein Programm praktisch, um sein eigenes Prozessverzeichnis zu erhalten.
  • /proc/slabinfo Zuordnungsinformationen des Slab-Cache im System
  • /proc/stat Einige Statusinformationen des Systems
  • /proc/swaps Die vom System verwendeten Swap-Bereichsinformationen
  • /proc/sysrq-trigger wird verwendet, um den sysRq-Schlüssel zu starten $>echo 1 > sysrq-trigger
  • /proc/uptime: Die Zeitspanne, die das System aktiv und im Leerlauf war. Für den Einsatz während der Betriebszeit
  • /proc/version Kernelversion

(2) Implementieren Sie selbst eine /proc-Datei

Die Header-Datei <linux/proc_fs.h> muss eingebunden werden, die Funktion ist in /fs/proc/generic.c definiert.

a. Erstellen Sie eine Datei unter /proc

Rufen Sie create_proc_read_entry auf, um eine neue Datei unter /proc zu erstellen

Struktur proc_dir_entry *create_proc_read_entry(
    const char *Name,
    mode_t-Modus, 
    Struktur proc_dir_entry *base,
    lese_proc_t *lese_proc, 
    ungültig * Daten)

b. Deinstallieren Sie Dateien unter /proc

Verwenden Sie remove_proc_entry, um Proc-Dateien zu deinstallieren

void remove_proc_entry(
    const char *Name, 
    Struktur proc_dir_entry *übergeordnet);

c. Definieren Sie eine Funktion, die Daten zurückgibt

Wenn der Prozess die /proc-Datei liest, weist der Kernel eine Speicherseite zu (d. h. einen Speicherblock mit PAGE_SIZE Bytes) und der Treiber gibt die Daten zurück, die über diese Speicherseite in den Benutzerbereich geschrieben werden sollen.

typedef int (read_proc_t)(char *Seite, char **Start, off_t aus,
int-Anzahl, int *eof, void *data);

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

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
  • Detaillierte Erklärung zum Schreiben von Linux-Kameratreibern
  • Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

<<:  So rufen Sie die Browser-Sharing-Funktion in Vue auf

>>:  So aktivieren Sie das langsame Abfrageprotokoll in MySQL

Artikel empfehlen

Implementierung der MySQL-Datentypkonvertierung

1. Problem Es gibt eine Tabelle wie unten gezeigt...

Analyse der Gründe, warum MySQL-Felddefinitionen nicht null verwenden sollten

Warum wird NULL so oft verwendet? (1) Javas Null ...

Unterschiede zwischen MySQL CHAR und VARCHAR beim Speichern und Lesen

Einführung Kennen Sie wirklich den Unterschied zw...

Miniprogramm zur Implementierung einer kreisförmigen Text-Scrolling-Animation

In diesem Artikel wird der spezifische Code des A...

Befehlscodebeispiele für die Installation und Konfiguration von Docker

Docker-Installation Installieren von Abhängigkeit...

js, um einen einfachen Kalendereffekt zu erzielen

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

Spezifische Methode zum Anzeigen von Benutzerautorisierungsinformationen in MySQL

Spezifische Methode: 1. Öffnen Sie die Eingabeauf...

Vorschläge zur Optimierung der Webseiten-Kopfzeile

Logo-Optimierung: 1. Das Logobild sollte so klein...

So ändern Sie die Standardspeicher-Engine in MySQL

MySQL-Speicher-Engine: Der MySQL-Server verwendet...

jQuery-Plugin zur Implementierung des Dashboards

Das jQuery-Plug-In implementiert das Dashboard zu...

js zur Realisierung eines einfachen Werbefensters

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

HTML-Tutorial: Ungeordnete Liste

<br />Originaltext: http://andymao.com/andy/...