SCIOCMD-SCSI-Adapter-Einheitentreiber ioctl-Operation
Zweck
Bietet die Möglichkeit, einen SCSI-Befehl an eine SCSI-Einheit auszugeben.
Beschreibung
Die Operation SCIOCMD-Befehl ermöglicht dem Aufrufenden, einen SCSI-Befehl an einen ausgewählten Adapter auszugeben. Dieser Befehl kann von Systemverwaltungsroutinen verwendet werden, um die Konfiguration von SCSI-Einheiten zu unterstützen.
Der Parameter arg für die Operation SCIOCMD ist die Adresse einer sc_passthru -Struktur, die im Feld /usr/include/sys/scsi.h definiert ist. Mit dem Parameter sc_passthru (Durchgriff) kann der Aufrufende auswählen, welches SCSI-und LUN-IDS den Befehl senden soll.
Das SCSI-Statusbyte und die Adapterstatusbyte werden über die Struktur sc_passthru (Durchgriff) zurückgegeben. Wenn das SCIOCMD Operation gibt einen Wert zurück von-1 und die globale Variable „errno“ auf einen Wert ungleich Null gesetzt ist, ist der angeforderte Vorgang fehlgeschlagen. In diesem Fall muss der Aufrufende die zurückgegebenen Statusbyte auswerten, um festzustellen, warum die Operation fehlgeschlagen ist und welche Wiederherstellungsaktionen ausgeführt werden müssen.
Wenn das SCIOCMD Der Vorgang schlägt fehl, weil ein Feld im sc_passthru Struktur hat einen ungültigen Wert, die Subroutine gibt einen Wert zurück von-1 wird die globale Variable errno auf EINVAL , und das einval_arg Das Feld wird auf die Feldnummer (beginnend mit 1 für das Versionsfeld) des Felds gesetzt, das einen ungültigen Wert hatte. Der Wert 0 für das Feld Einval_Argument gibt an, dass keine weiteren Informationen verfügbar sind.
- variable_cdb_ptr ist ein Zeiger auf einen Puffer, der die Variable SCSI cdb enthält.
- variable_cdb_länge bestimmt die Länge der Variablen CDB , auf die das Feld variable_cdb_ptr verweist.
Die Struktur Devinfo definiert die maximale Übertragungsgröße für den Befehl. Wenn versucht wird, mehr als die maximale Übertragungsgröße zu übertragen, gibt die Subroutine einen Wert von zurück-1 setzt die globale Variable errno auf einen Wert von EINVAL und legt den einval_arg auf den Wert 18.
Informationen zum Format der Prüfdaten für Anforderungen für eine bestimmte Einheit finden Sie im SCSI-Spezifikation (Small Computer System Interface) .
Rückgabewerte
| Element | Beschreibung |
|---|---|
| EIO | Ein Systemfehler ist aufgetreten. Versuchen Sie die Operation mehrere (drei) Male, da ein weiterer Versuch erfolgreich sein könnte. Wenn ein E/A -Fehler auftritt und das Feld Statusgültigkeit auf SC_SCSI_FEHLERgesetzt ist, enthält das Feld scsi_status einen gültigen Wert und muss überprüft werden. Wenn das Feld Statusgültigkeit den Wert null hat und bei aufeinanderfolgenden Versuchen so bleibt, ist ein nicht behebbarer Fehler aufgetreten. Wenn das Feld Statusgültigkeit den Wert SC_SCSI_FEHLER hat und das Feld scsi_status den Status Bedingung prüfen enthält, muss ein SCSI-Anforderungsprüfcode mit SCIOCMD-Befehl ioctl ausgegeben werden, um die Prüfdaten wiederherzustellen. |
| EFAULT | Das Kopieren eines Benutzerprozesses ist fehlgeschlagen. |
| EINVAL | Die Einheit ist nicht geöffnet oder der Aufrufende hat ein Feld in der Struktur sc_passthru (Durchgriff) auf einen ungültigen Wert gesetzt. |
| EACCES | Der Adapter befindet sich im Diagnosemodus. |
| ENOMEM | Eine Speicheranforderung ist fehlgeschlagen. |
| EZEITDOUT | Das Zeitlimit für den Befehl wurde überschritten. Versuchen Sie die Operation möglicherweise mehrmals, da ein weiterer Versuch erfolgreich sein könnte. |
| ENODEW | Die Einheit antwortet nicht. |
| EZEITDOUT | Die Operation wurde nicht abgeschlossen, bevor der Zeitlimitwert überschritten wurde. |
Dateien
| Element | Beschreibung |
|---|---|
| /dev/scsi0, /dev/scsi1, ... /dev/scsin | Stellt eine Schnittstelle für alle SCSI-Einheitentreiber für den Zugriff auf SCSI-Einheiten oder -Adapter bereit. |