uiomove-Kernel-Service
Zweck
Verschiebt einen Datenblock zwischen dem Kernelbereich und einem durch eine uio-Struktur definierten Bereich.
Syntax
Parameter
| Element | Beschreibung |
|---|---|
| CP | Gibt die Adresse im Kernelspeicher an, zu oder von der Daten versetzt werden. |
| n | Gibt die Anzahl der zu verschiebenden Byte an |
| rw | Gibt die Richtung der Bewegung an:
|
| Uiop | Zeigt auf eine uio-Struktur, die den bei der Datenübertragung verwendeten Puffer beschreibt. |
Beschreibung
Der Kernel-Dienst " uiomove verschiebt die angegebene Anzahl von Datenbytes zwischen dem Kernelbereich und einem durch " uio Struktur beschriebenen Bereich. Die oberen Hälften von Gerätetreibern, insbesondere von Zeichentreibern, verwenden häufig den uiomove-Dienst, um Daten in oder aus einem Benutzerbereich zu übertragen. Der ' uio_resid und uio_iovcnt in der uio-Struktur, die den Datenbereich beschreibt, muss größer als 0 sein, sonst wird ein Fehler zurückgegeben.
Der Dienst uiomove verschiebt die durch den Parameter n oder uio_resid angegebene Anzahl von Bytes, je nachdem, welcher Wert kleiner ist. Wenn entweder der Parameter n oder uio_resid gleich 0 ist, werden keine Daten verschoben. Der ' uio_segflg das Feld in der uio-Struktur wird verwendet, um anzuzeigen, ob die Bewegung auf einen Benutzer- oder Kernel-Datenbereich zugreift, oder ob der Aufrufer speicherübergreifende Operationen benötigt und die erforderlichen speicherübergreifenden Deskriptoren bereitgestellt hat. Wenn eine speicherübergreifende Operation angezeigt wird, muss ein speicherübergreifender Deskriptor im uio_xmem-Array für jedeiovecelement.
Wenn die Verschiebung erfolgreich ist, werden die folgenden Felder in der uio-Struktur aktualisiert:
| Feld | Beschreibung |
|---|---|
| uio_iov | Legt die Adresse der aktuelleniovecelement zu verwenden. |
| uio_xmem | Gibt die Adresse des aktuellenxmemelement zu verwenden. |
| uio_iovcnt | Legt die Anzahl der verbleibendeniovecelemente. |
| uio_iovdcnt | Gibt die Anzahl der bereits verarbeiteteniovecelemente. |
| uio_offset | Gibt den Zeichenoffset auf der Einheit an, die die Ein-/Ausgabe ausführt. |
| uio_resid | Gibt die Gesamtzahl der verbleibenden Zeichen in dem durch die uio-Struktur beschriebenen Datenbereich an. |
| iov_base | Gibt die Adresse des Datenbereichs an, der durch den aktuelleniovecelement. |
| iov_len | Gibt die Länge des verbleibenden Datenbereichs im Puffer an, der durch den aktuelleniovecelement. |
Ausführungsumgebung
Der Kernel-Dienst uiomove kann nur aus der Prozessumgebung aufgerufen werden.
Rückgabewerte
| Element | Beschreibung |
|---|---|
| 0 | Erfolgreiche Ausführung. |
| ENOMEM | Gibt an, dass kein Platz im Puffer vorhanden war. |
| EIO | Zeigt einen permanenten E/A-Fehlerdateibereich an. |
| ENOSPC | Gibt an, dass nicht genügend Plattenspeicherplatz verfügbar ist. |
| EFAULT | Gibt einen ungültigen Benutzerstandort an. |