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.