1. Mechanismus des Linux-Kernel-Treibermoduls Statisches Laden: Kompilieren Sie das Treibermodul in den Kernel und laden Sie es, wenn der Kernel gestartet wird. Dynamisches Laden: Kompilieren Sie das Treibermodul als ko und laden Sie es, wenn der Kernel gestartet wird. 2. Schreiben Sie den Kerneltreiber #include <linux/module.h> #include <linux/init.h> statische int __init test_init(void) { return 0; //Gib 0 zurück, um Erfolg anzuzeigen, gib eine negative Zahl zurück, um das Lademodul zu beenden} //__init Nachdem der Kernel den Treiber initialisiert hat, geben Sie den Codebefehlsbereich dieser Funktion frei static void __exit test_exit(void) { .... } //__exit gibt an, dass diese Funktion nur verwendet wird, wenn der Treiber deinstalliert und nach der Verwendung freigegeben wirdmodule_init(test_init); //Geben Sie test_init als Modulinitialisierungsfunktion anmodule_exit(test_exit); //Geben Sie test_exit als Deinstallationsfunktion zum Beenden des Moduls anMODULE_LICENSE("GPL"); //Geben Sie die unterstützten Protokolle anMODULE_AUTHOR("Autor"); MODULE_DESCRIPTION("Beschreibung"); MODULE_VERSION("Version"); #define __init __section(.init.text) #define __initdata __section(.init.data) char __initdata buf[] = "Hallo Welt"; #define __exitdata __section(.exit.data) #define __exit __section(.exit.text) ///////////// test 1768 0 - Live 0xbf03c000 Modulname, belegte Speichergröße, Anzahl der Aufrufe, Gültigkeit, Speicheradresse, an der sich das Modul befindet 3. Makefile des Treibermoduls
4. Überprüfen Sie die Treiberausgabemeldung cat /var/log/Nachrichten Schwanz /var/log/Nachrichten 5. Printk-Pegelkontrolle /usr/src/kernels/2.6.18-194.el5-i686/include/linux/kernel.h <linux/kernel.h> #define KERN_EMERG "<0>" /* System ist unbrauchbar */ #define KERN_ALERT "<1>" /* Aktion muss sofort ausgeführt werden */ #define KERN_CRIT "<2>" /* kritische Bedingungen */ #define KERN_ERR "<3>" /* Fehlerbedingungen */ #define KERN_WARNING "<4>" /* Warnbedingungen */ #define KERN_NOTICE "<5>" /* normaler, aber signifikanter Zustand */ #define KERN_INFO "<6>" /* informativ */ #define KERN_DEBUG "<7>" /* Meldungen auf Debug-Ebene */ Die Standardstufe ist Verwendung:
Wenn die von der printk-Funktion verwendete Ebene niedriger ist als die aktuelle Ebene Ändern Sie die Pegelausgabe 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:
|
<<: Vue-Routing zum Implementieren der Login-Abfangung
>>: Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux
Wir, insbesondere Linux-Ingenieure, haben täglich...
Inhaltsverzeichnis 01 Gemeinsame Controller in k8...
Detaillierte Erklärung und Beispiele zur Passwort...
Inhaltsverzeichnis Benutzerverwaltung Neuen Benut...
MySQL ist ein relationales Datenbankverwaltungssy...
Inhaltsverzeichnis 1. Maven-Abhängigkeit 2. Menüb...
Einzeiliger Befehl docker run -d \ -v /share:/hom...
Die Leistung Ihrer Website oder Ihres Dienstes hä...
In diesem Artikel wird der spezifische Code für J...
1. Neuen Benutzer hinzufügen Nur lokalen IP-Zugri...
Inhaltsverzeichnis Was ist Vuex? Vuex-Nutzungszyk...
Inhaltsverzeichnis Grundlegende HTML-Struktur Gen...
MySQL-Dienst 8.0.14-Installation (allgemein), zu ...
Der Befehl „Find“ wird hauptsächlich zum Suchen v...
Dieser Artikel beschreibt, wie man PHP und Nginx ...