Inhalt

2. Was ist das generische SCSI Interface?

Das generische SCSI Interface wurde geschrieben, um einen allgemeinen Zugriff auf beliebige SCSI Geräte zu ermöglichen (zuvor waren dazu meist Kerneländerungen notwendig). Es wurde ursprünglich von Lawrence Foard ( entropy@world.std.com) entwickelt und von Killy Corporation gesponsert (siehe dazu die Kommentare in der Datei scsi/sg.h).

Dieses Interface ermöglicht spezielle Zugriffe auf SCSI-Geräte durch Benutzerapplikationen (also Codeteile, die im sogenannten Userspace laufen). Dadurch braucht kein spezieller Kerneldevicetreiber mehr entwickelt werden. Die Vorteile sind sicherere Entwicklung und Fehlerbeseitigung und Unabhängigkeit vom Kernel.

Trotzdem ist Vorsicht angebracht, falls die Applikation nicht auf Anhieb ordnungsgemäß programmiert wird. Es kann dann passieren, daß der SCSI-Bus, die Applikation oder der Kernel blockieren. Aus diesen Gründen ist es wichtig, das generische Interface richtig anzusprechen und natürlich einen Backup aller wichtigen Daten durchzuführen. Vor der Ausführung eigener Programme empfiehlt sich außerdem das Kommando sync, um Schreibbuffer zu leeren und einen möglichen Datenverlust zu minimieren.

Ein weiterer Vorteil dieses Interfaces ist die Unabhängigkeit von Kernelinterna. Selbst wenn innerhalb des Kernels Strukturen verändert werden, betrifft das die Applikation nur, wenn an der Schnittstelle selbst Änderungen auftreten. Bei der dynamischen Kernelentwicklung ist dies ein wichtiger Vorteil gegenüber einem Kerneldevicetreiber. Dieser muß weit häufiger an Kerneländerungen angepaßt werden.

Am häufigsten wird diese Schnittstelle verwendet, wenn spezielle, exotische oder neue SCSI-Hardware speziell angesprochen weden soll, um spezielle oder erweiterte Fähigkeiten zu benutzen. Nicht so gängige SCSI-Geräte wie Scanner, Drucker, CD-ROM Jukeboxen können dann schnell und einfach durch Applikationen bedient werden.


Inhalt