Service de noyau uiomove
Objectif
Déplace un bloc de données entre un espace de noyau et un espace défini par une structure uio .
Syntaxe
Paramètres
| Article | Descriptif |
|---|---|
| cp | Indique l'adresse dans la mémoire du noyau à partir de laquelle les données sont déplacées. |
| n | Indique le nombre d'octets à déplacer. |
| Rw | Indique la direction du déplacement:
|
| Uiop | Pointe vers une structure uio décrivant la mémoire tampon utilisée dans le transfert de données. |
Descriptif
Le service de noyau uiomove déplace le nombre d'octets de données spécifié entre l'espace de noyau et un espace décrit par une structureuio. Les moitiés supérieures du pilote de périphérique, en particulier les pilotes de périphérique de type caractère, utilisent fréquemment le service uiomove pour transférer des données vers ou en dehors d'une zone utilisateur. Les zones uio_resid et uio_iovcnt de la structure uio décrivant la zone de données doivent être supérieures à 0, sinon une erreur est renvoyée.
Le service uiomove déplace le nombre d'octets de données spécifié par le paramètre n ou uio_resid , la valeur la moins élevée étant retenue. Si le paramètre n ou uio_resid est 0, aucune donnée n'est déplacée. La zone uio_segflg de la structure uio est utilisée pour indiquer si le déplacement accède à une zone de données d'utilisateur ou de noyau ou si l'appelant requiert des opérations intermémoire et a fourni les descripteurs intermémoire requis. Si une opération intermémoire est indiquée, il doit y avoir un descripteur intermémoire dans le tableau uio_xmem pour chaque élément iovec .
Si le déplacement aboutit, les zones suivantes de la structure uio sont mises à jour:
| Zone | Descriptif |
|---|---|
| uio_iov | Indique l'adresse de l'élément iovec en cours à utiliser. |
| uio_xmem | Indique l'adresse de l'élément xmem en cours à utiliser. |
| uio_iovcnt | Indique le nombre d'éléments iovec restants. |
| uio_iovdcnt | Indique le nombre d'éléments iovec déjà traités. |
| uio_offset | Indique le décalage de caractère sur l'unité exécutant les E-S. |
| uio_resid | Indique le nombre total de caractères restant dans la zone de données décrite par la structure uio . |
| iov_base | Indique l'adresse de la zone de données décrite par l'élément iovec en cours. |
| iov_len | Indique la longueur de la zone de données restante dans la mémoire tampon décrite par l'élément iovec en cours. |
Environnement d'exécution
Le service de noyau uiomove ne peut être appelé qu'à partir de l' environnement de processus .
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. |
| EIO | Indique un espace fichier d'erreur d'E-S permanent. |
| ENOSPC | Indique un espace disque insuffisant. |
| EDÉFAUT | Indique un emplacement utilisateur non valide. |