Service de noyau ureadc

Objectif

Ecrit un caractère dans une mémoire tampon décrite par un Structure Uio.

Syntaxe

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

Paramètres

Article Descriptif
c Indique un caractère à écrire dans la mémoire tampon.
Uiop Pointe vers une structure Uio décrivant la mémoire tampon dans laquelle placer un caractère.

Descriptif

Le service de noyau Ureadc écrit un caractère dans 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 Ureadc pour transférer des données dans une zone utilisateur.

La méthodologie uio_resid et uio_iovcntLes zones de la structure Uio décrivant la zone de données doivent être supérieures à 0. Si ces zones ne sont pas supérieures à 0, une erreur est renvoyée. La méthodologie uio_segflgLa zone de la structure Uio est utilisée pour indiquer si les données sont écrites dans une zone de données utilisateur ou noyau. Il est également utilisé pour indiquer si l'appelant a besoin d'opérations intermémoire et a fourni les descripteurs de mémoire croisée requis. Les valeurs de l'indicateur sont définies dans le fichier /usr/include/sys/uio.h .

Si les données sont écrites avec succès, 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é à partir de laquelle les données sont lues.
uio_resid Indique le nombre total de caractères restants dans la zone de donnéesuioStructure.
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 de la zone de données restante dans la mémoire tampon décrite par le courantiovec.

Environnement d'exécution

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

Valeurs renvoyées

Article Descriptif
0 % Indique que l'exécution a réussi.
ENOMEM Indique qu'il n'y a pas de place dans la mémoire tampon.
EDÉFAUT Indique que l'emplacement utilisateur n'est pas valide pour l'une des 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 se produit lors de l'accès à l'emplacement.