Um das Schreiben eines Device Treibers unter Linux verständlich zu machen sind grundlegende Kenntnisse über SCSI unvermeidlich. Deshalb zuerst einmal der Hinweis auf eine grundlegende
die für das Verständnis unerlässlich ist.
Das eigentliche Erstellen eines SCSI-Treibers wird von LINUX maßgeblich unterstützt, da es einen sogenannten "high-level-Code" bereitstellt, der Interruptgesteuert auf den sogenannten "low-level-Code" zugreift. Dieser "low-level-Code" ist derjenige Teil des Treibers, welcher auf den jeweiligen SCSI-Host-Adapter angepasst werden muß. Der "low-level-Code" ist also der eigentliche vom Programmierer zu schreibende Code.
Um nun dem "high-level-Code" die Kommunikation mit dem "low-level-Code" zu ermöglichen sind zwei Strukturen fest vorgegeben. Zum einen ist da die Struktur Scsi_Host, welche vom "high-level-Code" verwendet wird um die speziellen Funktionen für den entsprechenden Host-Adapter im "low-level-Code" aufzurufen. Ebenso beinhaltet sie konstante Werte des Host-Adapters. Zum anderen ist da die Struktur Scsi_Cmnd auf die sowohl der "high-level-Code" als auch der "low-level-Code" zugreift. Denn immer wenn der "high-level-Code" eine Funktion aus der Struktur Scsi_Host benutzt verwendet er die Struktur Scsi_Cmnd um Parameter an den "low-level-Code" zu übergeben und in ebensolcher Weise verwendet der "low-level-Code" diese Struktur für Rückgabewerte an den "high-level-Code".
Es sind vom Programmierer also folglich die Funktionen der Struktur Scsi_Host bereitzustellen.
Um eine Beschreibung dieser Funktionen zu erhalten bitte hier -->Scsi_Host klicken.