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

Prinzipielle Beispiele für die vier Netzwerktypen von Docker

Vier Netzwerktypen: Keine: Konfigurieren Sie kein...

Detaillierte Erklärung zur Verwendung von MySQL-Gruppenlinks

Gruppieren und Verknüpfen sind in MySQL die beide...

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

Linux 6 Schritte zum Ändern der Standard-Remote-Portnummer von SSH

Der Standard-SSH-Remote-Port in Linux ist 22. Man...

So fügen Sie MySQL Indizes hinzu

Hier ist eine kurze Einführung in Indizes: Der Zw...

So verwenden Sie JSX in Vue

Was ist JSX JSX ist eine Syntaxerweiterung von Ja...

So ändern Sie die Zeit in der virtuellen CentOS-Maschine

Das obere Bild zeigt die Systemzeit und das unter...

Ubuntu 18.04 installiert MySQL 5.7.23

Ich habe MySQL zuvor problemlos in Ubuntu 16.04 i...

So setzen Sie das MySQL-Root-Passwort zurück

Inhaltsverzeichnis 1. Ich habe das Root-Passwort ...

Der Unterschied zwischen MySQL count(1), count(*) und count(field)

Inhaltsverzeichnis 1. Erster Blick auf COUNT 2. D...

Vue implementiert die Drag & Drop-Funktion für Bilder

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der allgemeinen Docker-Befehle und Tipps

Installationsskript Ubuntu / CentOS Es scheint ei...

Docker exec führt mehrere Befehle aus

Der Befehl „Docker Exec“ kann Befehle in einem la...