uwritec-Kernel-Service

Zweck

Ruft ein Zeichen aus einem Puffer ab, der von einem UIO -Strukturbeschrieben wird

Syntax

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/uio.h>
int uwritec ( uiop)
struct uio *uiop;

Parameter

Element Beschreibung
Uiop Verweist auf eine UIO -Struktur, die den Puffer beschreibt, aus dem ein Zeichen gelesen werden soll

Beschreibung

Der uwritec (Befehl) -Kernel-Service liest ein Zeichen aus einem Puffer, der von einem UIO -Strukturbeschrieben wird. Einheitentreiberroutinen der oberen Hälfte, insbesondere Zeicheneinheitentreiber, verwenden häufig den uwritec (Befehl) -Kernelservice, um Daten aus einem Benutzerbereich zu übertragen. Die uio_resid und uio_iovcnt -Felder in der Struktur UIO müssen größer als 0 sein, andernfalls wird ein Fehler zurückgegeben.

Die uio_segflgDas Feld in der Struktur UIO gibt an, ob die Daten aus einem Benutzer-oder Kerneldatenbereich gelesen werden. Dieses Feld gibt auch an, ob der Aufrufende speicherübergreifende Operationen erfordert und die erforderlichen speicherübergreifenden Deskriptoren bereitgestellt hat. Die Werte für dieses Flag sind in der Datei /usr/include/sys/uio.h definiert.

Wenn die Daten erfolgreich gelesen werden, werden die folgenden Felder in der Struktur UIO aktualisiert:

Feld Beschreibung
uio_iov Gibt die Adresse des aktuellenioveczu verwendendes Element.
uio_xmem Gibt die Adresse des aktuellenxmemzu verwendendes Element (für speicherübergreifende Kopie).
uio_iovcnt Gibt die Anzahl der verbleibendeniovecElemente.
uio_iovdcnt Gibt die Anzahl deriovecElemente bereits verarbeitet.
uio_offset Gibt den Zeichenoffset auf der Einheit an, auf die Daten geschrieben werden.
uio_resid Gibt die Gesamtzahl der Zeichen an, die in dem von der UIO -Struktur beschriebenen Datenbereich verbleiben.
iov_base Gibt die Adresse des nächsten verfügbaren Zeichens in dem Datenbereich an, der durch den aktuelleniovecElement.
iov_len Gibt die Länge der verbleibenden Daten in dem Puffer an, der durch die aktuelleiovecElement.

Ausführungsumgebung

Der Kernel-Service uwritec (Befehl) kann nur über Prozessumgebung aufgerufen werden.

Rückgabewerte

Nach erfolgreichem Abschluss gibt der uwritec (Befehl) -Service das Zeichen zurück, an das er zum Abrufen gesendet wurde.

Element Beschreibung
-1 Gibt an, dass der Puffer leer ist oder die Benutzerposition aus einem der folgenden drei Gründe ungültig ist:
  • Deruio_segflgFeld gibt den Benutzeradressbereich und die Basisadresse an (iov_baseFeld) verweist auf eine Position außerhalb des Benutzeradressraums.
  • Der Benutzer hat keine ausreichende Berechtigung für den Zugriff auf die Position.
  • Beim Zugriff auf die Position ist ein E/A-Fehler aufgetreten.