fp_opendev Kernel-Service
Zweck
Öffnet eine Gerätedatei.
Syntax
Parameter
| Element | Beschreibung |
|---|---|
| Devno | Gibt die Haupt-und Nebeneinheitennummer des zu öffnenden Einheitentreibers an. |
| flag | Gibt einen der folgenden Werte an:
|
| cname | Verweist auf einen Kanal, der eine Zeichenfolge oder einen Nullwert angibt. |
| ext | Gibt ein Erweiterungsargument an, das für einige Einheitentreiber erforderlich ist. Inhalt, Form und Verwendung werden vom einzelnen Fahrer bestimmt. |
| FPP | Gibt den zurückgegebenen Dateizeiger an. Dieser Parameter wird nach Referenz übergeben und vom Service fp_opendev als Dateizeiger für diese offene Instanz aktualisiert. Dieser Dateizeiger wird als Eingabe für andere Logical File System Services verwendet, um die offene Instanz anzugeben. |
Beschreibung
Der Kernel oder die Kernelerweiterung ruft den fp_opendev -Kernelservice auf, um eine Einheit durch Angabe der Haupt-und Nebengerätenummer der Einheit zu öffnen. Der fp_opendev -Kernel-Service stellt die richtige Semantik zum Öffnen der Zeichen-oder Multiplexklasse von Einheitentreibern bereit.
Wenn der angegebene Einheitentreiber kein Multiplexing ist:
- Für diese Einheit wurde ein Kern-I-Node gefunden oder erstellt.
- Die Anzahl der I-Node-Referenzen wird um 1 erhöht.
- Der Eingangspunkt des Einheitentreibers ddopen wird mit den Parametern Devno, Einheitenflagund Ext aufgerufen. Der nicht verwendete Parameter Chan im Aufruf der Routine ddopen wird auf 0 gesetzt.
Wenn es sich bei dem Einheitentreiber um einen Einheitentreiber mit Multiplexzeichen handelt (d. h., sein Eingangspunkt Ddmpx ist definiert), wird für diesen Kanal ein In-Core-I-Node erstellt. Die Ddmpx -Routine des Einheitentreibers wird auch mit dem Zeiger CName auf die Kanalidentifikationszeichenfolge aufgerufen, wenn sie ungleich null ist. Wenn der Zeiger CName null ist, wird die Ddmpx -Einheitentreiberroutine mit dem Zeiger auf eine Nullzeichenfolge aufgerufen.
Wenn der Einheitentreiber den Kanal zuordnen kann, gibt die Routine Ddmpx eine Kanal-ID zurück, die durch den Parameter Chan dargestellt wird. Wenn der Einheitentreiber keinen Kanal zuordnen kann, gibt der FPOpendev -Kernel-Service den Fehlercode ENXIO zurück. Bei erfolgreicher Ausführung wird die Anzahl der I-Node-Referenzen um 1 erhöht. Die ddopen -Routine des Einheitentreibers wird auch mit den Parametern Devno, Markierung, Chan (bereitgestellt durch die Ddmpx -Routine) und Ext aufgerufen.
Wenn der Rückgabewert der angegebenen ddopen -Routine des Einheitentreibers ungleich null ist, wird er als Rückkehrcode für den fp_opendev -Kernelservice zurückgegeben. Wenn der Rückkehrcode der ddopen -Routine des Einheitentreibers 0 ist, gibt der fp_opendev -Service den Dateizeiger zurück, der diesem Öffnen der Einheit entspricht.
Der Kernel-Service fp_opendev kann nur in der oberen Hälfte der Prozessumgebung oder des Einheitentreibers aufgerufen werden. Interrupt-Handler können sie nicht aufrufen. Es wird davon ausgegangen, dass sich alle Argumente für den fp_opendev -Kernelservice im Kernelbereich befinden.
Der vom fp_opendev -Kernel-Service zurückgegebene Dateizeiger (FPP) ist nur für die Verwendung mit einer Untergruppe der Services des logischen Dateisystems gültig. Diese neun Services können aufgerufen werden:
Andere Services geben einen EINVAL -Rückgabewert zurück, wenn sie aufgerufen werden.
Ausführungsumgebung
Der Kernel-Service fp_opendev kann nur über Prozessumgebung aufgerufen werden.
Rückgabewerte
| Element | Beschreibung |
|---|---|
| 0 | Zeigt eine erfolgreiche Operation an. |
Das Feld *FPP zeigt auch auf eine offene Dateistruktur, die für die anderen Services des logischen Dateisystems gültig ist. Wenn ein Fehler auftritt, wird einer der folgenden Werte aus der Datei /usr/include/sys/errno.h zurückgegeben:
| Element | Beschreibung |
|---|---|
| EINVAL | Gibt an, dass der übergeordnete Teil des Parameters Devno die maximal zulässige Anzahl überschreitet oder der Parameter Flags ungültig ist. |
| ENODEW | Gibt an, dass die Einheit nicht vorhanden ist |
| EINTR | Gibt an, dass das Signal während der Verarbeitung der Anforderung fp_opendev abgefangen wurde. |
| ENDATEI | Gibt an, dass die Systemdateitabelle voll ist. |
| ENXIO | Gibt an, dass die Einheit gemultiplext ist und den Kanal nicht zuordnen kann. |
Der fp_opendev -Service gibt auch jeden Rückkehrcode ungleich null zurück, der von einer ddopen -Routine des Einheitentreibers zurückgegeben wurde.