Kapitel 5. Einfache Treiber

Inhaltsverzeichnis
5.1. Bevor es losgeht ...
5.2. Den Kernel erweitern
5.2.1. Kernelmodule
5.2.2. Vom Modul zum Treiber
5.2.3. Gerätenummern ersetzen Major-Nummern
5.3. Die Treiber-Einsprungspunkte
5.3.1. driver_open: die Zugriffskontrolle
5.3.2. Aufräumen in driver_close
5.3.3. driver_read liefert die Daten
5.3.4. Schreibzugriffe im Treiber
5.3.5. Die Universalschnittstelle IO-Control
5.3.6. Wenn Applikationen mehrere Ein-/Ausgabekanäle überwachen
5.4. Daten zwischen Kernel- und User-Space transferieren
5.5. Hardware anbinden
5.5.1. Ressourcen-Management
5.5.2. Datentypen und Datenablage
5.5.3. Direkter Hardwarezugriff
5.5.4. Hardware erkennen
5.5.5. PCI
5.6. Zugriffsmodi im Treiber realisieren
5.7. Treiberinstanzen

Während in sämtlichen vorherigen Kapiteln die grundlegende Basis für die eigentliche Treiberentwicklung geschaffen wurde, geht es von nun an ins »Eingemachte«. Dabei konzentriert sich dieses Kapitel auf die ersten beiden der in Kapitel Theorie ist notwendig vorgestellten drei Funktionsgrundtypen eines Treibers: Funktionen zur Integration des Treibers in den Betriebssystemkern sowie Funktionen, die durch die Applikation angestoßen werden. Sie reichen aus, um erste Gerätetreiber zu erstellen. Mit den weiter führenden Funktionen der dritten Kategorie – solche, die durch den Kernel getriggert werden – beschäftigt sich Kapitel Fortgeschrittene Treiberentwicklung.

Nach einer kurzen Checkliste, ob alle Voraussetzungen zum Programmierstart erfüllt sind, geht es zunächst um das Schreiben erster Module und ihren Weg hin zum Treiber. Danach kommt die wesentliche Aufgabe des Treiberentwicklers zur Sprache, Funktionen zu kodieren, die vom Betriebssystemkern aufgerufen werden, wenn eine Applikation über einen Systemcall (wie z.B. read) auf das Gerät zugreift. Im Anschluss werden drei Aspekte gesondert behandelt:

Bei der Erstellung eines Treibers stellt sich sehr häufig das Problem, Daten, die im Zusammenhang mit einer Applikation stehen, zwischenzuspeichern. Eine elegante Lösung hierfür ist die Verknüpfung dieser Daten mit einer geeigneten Datenstruktur des Betriebssystemkerns – eine Technik, die zum Abschluss des Kapitels vorgestellt werden soll. Solchermaßen geschult, können Sie bereits Treiber für einfache Aufgaben entwickeln – erklärtes Ziel dieses Kapitels!


Lizenz