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:
wie Daten zwischen Applikation und Treiber ausgetauscht werden,
wie auf Hardware zugegriffen werden kann und die Daten zwischen Treiber und Hardware ausgetauscht werden (Hardwareanbindung) und schließlich
wann und wie innerhalb des Treibers ein Rechenprozess »schlafen« gelegt wird.
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!
Zurück | Zum Anfang | Weiter |
Zugriffsmodi | Bevor es losgeht ... |