SCIOEVENT (Ereignis) SCSI-Adaptereinheitentreiber ioctl-Operation
Zweck
Registriert die ausgewählte SCSI-Einheiteninstanz für den Empfang asynchroner Ereignisbenachrichtigungen.
Beschreibung
Die Operation SCIOEREIGNIS registriert die ausgewählte Initiator-oder Zielmoduseinheit für den Empfang asynchroner Ereignisbenachrichtigungen. Nur Kernelmodusprozesse oder Einheitentreiber können diese Funktion aufrufen. Wenn ein Prozess im Benutzermodus versucht, eine SCIOEREIGNIS -Operation auszuführen, ist der Befehl ioctl nicht erfolgreich und der globale Wert Fehlernummer wird auf EPERMgesetzt.
Der Parameter arg für die Operation SCIOEVENT muss auf die Adresse einer sc_event_struct -Struktur gesetzt werden, die sich in der Datei /usr/include/sys/scsi.h befindet. Wenn es sich um eine Zielmodusinstanz handelt, wurde die Operation SCIOSTARTTGT verwendet, um die Einheitensitzung zu öffnen. Der Anrufer füllt dann dieIDmit der SCSI-ID des SCSI-Initiators und legt dielogical unit number(LUN) Feld auf den Wert 0. Wenn es sich um eine Instanz im Initiatormodus handelt, wurde die Operation SCIOSTART verwendet, um die Einheitensitzung zu öffnen.IDwird dann auf die SCSI-ID des SCSI-Ziels und die LUN auf die LUN-ID des SCSI-Ziels gesetzt. Die Einheit muss zuvor mit einem der Start-ioctls geöffnet worden sein, damit diese Operation erfolgreich ausgeführt werden kann. Wenn die Einheitensitzung nicht geöffnet wird, ist der Befehl ioctl nicht erfolgreich und der zurückgegebene globale Wert für Fehlernummer wird auf EINVALgesetzt.
Die von diesem ioctl ausgeführte Ereignisregistrierung ist nur einmal pro Einheitensitzung zulässig. Nur die erste SCIOEREIGNIS -Operation wird akzeptiert, nachdem die Einheit geöffnet wurde. Nachfolgende SCIOEREIGNIS -Operationen sind nicht erfolgreich und der globale Wert Fehlernummer ist auf EINVALgesetzt. Die Ereignisregistrierung wird automatisch abgebrochen, wenn die Gerätesitzung geschlossen wird.
Der Aufrufende füllt diemodemit einem der folgenden Werte, die in der Datei /usr/include/sys/scsi.h definiert sind:
#define SC_IM_MODE /* this is an initiator mode device */ #define SC_TM_MODE /* this is a target mode device */Derasync_funcDas Feld wird mit der Adresse einer fixierten Routine (im aufrufenden Programm) ausgefüllt, die vom Einheitentreiber des SCSI-Adapters aufgerufen werden soll, wenn für eine registrierte Einheit ein asynchroner Ereignisstatus verfügbar ist. Die Struktur struct sc_event_info , die in der Datei /usr/include/sys/scsi.h definiert ist, wird nach Adresse an die async_func -Routine des Aufrufenden übergeben.
Derasync_correlatorDas Feld kann vom Aufrufenden optional verwendet werden, um ein effizientes Mittel zum Zuordnen von Ereignisinformationen zur entsprechenden Einheit bereitzustellen. Dieses Feld wird vom Einheitentreiber des SCSI-Adapters gespeichert und unverändert zurückgegeben, wobei die Informationen an die Asynchrone Funktion -Routine des aufrufenden Programms zurückgegeben werden.
Reservierte Felder müssen vom Aufrufenden auf 0 gesetzt werden.
Rückgabewerte
Nach erfolgreicher Beendigung gibt diese Operation den Wert 0 zurück. Andernfalls wird ein Wert von-1 wird zurückgegeben und die Fehler Die globale Variable ist auf einen der folgenden Werte gesetzt:
| Wert | Beschreibung |
|---|---|
| EFAULT | Zeigt an, dass eine fehlerhafte Kopie zwischen Kernel und Benutzeradressbereich aufgetreten ist. |
| EINVAL | Entweder wurde kein Bediener SCIOSTART oder SCIOSTARTTGT an diese Einheiteninstanz ausgegeben oder diese Einheit ist bereits für asynchrone Ereignisse registriert. |
| EPERM | Gibt an, dass der Aufrufende nicht im Kernelmodus ausgeführt wird. Dies ist der einzige zulässige Modus für die Ausführung dieser Operation. |
Dateien
| Element | Beschreibung |
|---|---|
| /dev/scsi0, /dev/scsi1,..., /dev/scsin | Stellen Sie eine Schnittstelle bereit, damit SCSI-Einheitentreiber auf SCSI-Einheiten oder -Adapter zugreifen können. |
| /dev/vscsi0, /dev/vscsi1, ..., /dev/vscsin | Stellen Sie eine Schnittstelle bereit, damit SCSI-2 Fast/Wide Adapter/A -und SCSI-2 Differential Fast/Wide Adapter/A -Einheitentreiber auf SCSI-Einheiten oder -Adapter zugreifen können. |