Reale Geräte
Ein Blockgerätetreiber für reale Geräte unterscheidet sich von dem vorgestellten Code in zweierlei Hinsicht:
-
Ein reales Gerät verwendet die Funktion
»blk_init_queue()« , um einer Request-Queue die Adresse
der Request-Funktion zu übergeben und sich die Adresse der
zugehörigen Request-Queue geben zu lassen. Es gibt kein
»blk_alloc_queue()« und kein
»blk_queue_make_request()«. Die Funktion erwartet als
zweiten Parameter die Adresse eines Spinlocks, der parallele Zugriffe auf die Request-Queue absichert:
if( (bdqueue = blk_init_queue(
&bdRequest, &bdlock))==NULL )
goto out;
-
Ein echter Blockgerätetreiber realisiert eine
Request-Funktion (siehe Abbildung 4).

|
Abbildung 4: Das Struktogramm zeigt die Arbeitsweise der Transferfunktion eines Blockgerätetreibers. Die Routine »elv_next_request()« bildet eine Schleife für alle Aufträge an den Treiber.
|
Die Request-Funktion entnimmt mit Hilfe des Makros »elv_next_request()« den jeweils nächsten Auftrag aus der Request-Liste:
while((req = elv_next_request(q))
!= NULL ) {
Das Makro erhält als Parameter die Request-Queue und gibt einen Zeiger auf den nächsten Auftrag »req« zurück (vom Typ »struct request *«, siehe Abbildung 2). Zunächst muss der Treiber aber feststellen, ob es sich um einen normalen Schreib- oder Leseauftrag handelt:
if( !blk_fs_request(req) ) {
// kein Schreib-/Leseauftrag
end_request( req, 0 );
continue;
}
Ist dies nicht der Fall, holt der Treiber mit »continue« den nächsten Auftrag aus der Liste. Handelt es sich um einen Schreib- oder Leseauftrag, arbeitet er ihn ab. Das Makro »rq_for_each_bio()« liefert dazu als Teil einer Schleife den jeweiligen BIO-Block zurück, den der Treiber dann wie beschrieben auswertet:
rq_for_each_bio(bio, req ) {
Hat er einen Auftrag abgearbeitet, ruft er »end_request()« auf. Der erste Parameter ist dabei der Auftrag selbst. Der zweite Parameter spezifiziert mit einem Wert ungleich null, dass der Auftrag bearbeitet wurde (siehe Abbildung 4).
Rückblick und Vorschau
Das Blockgerätemodell bietet eine einheitliche Programmierschnittstelle für reale Hardware zur Datenspeicherung - von der großen Festplatte bis zum USB-Stick. Um USB-Geräte geht es in der nächsten Folge der Kern-Technik, denn die haben mittlerweile RS-232 als Standardschnittstelle abgelöst. (ofr)
|
[1] Eva-Katharina Kunst, Jürgen Quade, "Kern-Technik", Folge 1: Linux-Magazin 8/03, S. 88
[2] Eva-Katharina Kunst, Jürgen Quade, "Meister-Installateur": Linux-Magazin 1/04, S. 28
[3] Jonathan Corbet, "Driver Porting: A simple block driver": [http://lwn.net/Articles/58719/]
[4] Jonathan Corbet, "Driver Porting: the gendisk interface": [http://lwn.net/Articles/25711/]
|
|
Eva-Katharina Kunst, Journalistin, und Jürgen Quade, Professor an der Hochschule Niederrhein, sind seit den Anfängen von Linux Fans von Open Source.
|
Copyright © 2002 Linux New Media AG
|
Ähnliche Artikel
|
|
Einbruch?
|
Spuren und Daten nach Crackversuchen oder Beschlagnahme richtig
sichern
|
|
Knoppix 6.5
|
Klaus Knopper über sein neues Linux
|
|
Blitzmerker
|
Neue Dateisysteme nehmen Rücksicht auf den begrenzten Lebenszyklus von Flashspeichern
|
|
Kern-Technik
|
Kernel- und Treiberprogrammierung mit dem Kernel 2.6 -
Folge 28
|
|
Kern-Technik
|
Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 54
|
|
Fragwürdige Softskills
|
Kurztest: Mini-Rechner von Transtec mit SLED 10
|
| Whitepaper |
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|