Service de noyau uwritec

Objectif

Extrait un caractère d'une mémoire tampon décrite par un Structure Uio.

Syntaxe

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

Paramètre

Article Descriptif
Uiop Pointe vers une structure Uio décrivant la mémoire tampon à partir de laquelle lire un caractère.

Descriptif

Le service de noyau Uwritec lit un caractère à partir d'une mémoire tampon décrite par un Structure Uio. Les routines demi supérieures du pilote de périphérique, en particulier les pilotes de périphérique de type caractères, utilisent fréquemment le service de noyau Uwritec pour transférer des données à partir d'une zone utilisateur. La méthodologie uio_resid et uio_iovcntLes zones de la structure Uio doivent être supérieures à 0 ou une erreur est renvoyée.

La méthodologie uio_segflgLa zone de la structure Uio indique si les données sont lues à partir d'une zone de données utilisateur ou noyau. Cette zone indique également si l'appelant a besoin d'opérations de mémoire croisée et a fourni les descripteurs de mémoire croisée requis. Les valeurs de cet indicateur sont définies dans le fichier /usr/include/sys/uio.h .

Si les données sont lues correctement, les zones suivantes de la structure Uio sont mises à jour:

Zone Descriptif
uio_iov Indique l'adresse du courantiovecélément à utiliser.
uio_xmem Indique l'adresse du courantxmemélément à utiliser (utilisé pour la copie intermémoire).
uio_iovcnt Indique le nombre deiovecéléments.
uio_iovdcnt Indique le nombre deiovecéléments déjà traités.
uio_offset Indique le décalage de caractère sur l'unité à laquelle les données sont écrites.
uio_resid Indique le nombre total de caractères restants dans la zone de données décrite par la structure Uio .
iov_base Indique l'adresse du prochain caractère disponible dans la zone de données décrite par le présentiovec.
iov_len Indique la longueur des données restantes dans la mémoire tampon décrite par le présentiovec.

Environnement d'exécution

Le service de noyau Uwritec peut être appelé à partir de Environnement de processus uniquement.

Valeurs renvoyées

Une fois l'opération terminée, le service Uwritec renvoie le caractère qu'il a été envoyé à extraire.

Article Descriptif
-1 Indique que la mémoire tampon est vide ou que l'emplacement de l'utilisateur n'est pas valide pour l'une des trois raisons suivantes:
  • :NONE.uio_segflgIndique l'espace utilisateur et l'adresse de base (iov_base) pointe vers un emplacement en dehors de l'espace adresse de l'utilisateur.
  • L'utilisateur ne dispose pas des droits suffisants pour accéder à l'emplacement.
  • Une erreur d'E-S s'est produite lors de l'accès à l'emplacement.