Service de noyau copyinstr
Objectif
Copie une chaîne de caractères (y compris le caractère null de fin) de l'utilisateur vers l'espace du noyau.
Syntaxe
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/uio.h>
Sur le noyau 32 bits, la syntaxe du service de noyau Copyinstr est la suivante:
int copyinstr (from, to, max, actual)
caddr_t from;
caddr_t to;
uint max;
uint *actual;
Sur le noyau 64 bits, la syntaxe du sous-programme Copyinstr est la suivante:
int copyinstr (from, to, max, actual)
void *from;
void *to;
size_t max;
size_t *actual;
Paramètres
| Article | Descriptif |
|---|---|
| à partir de | Indique l'adresse de la chaîne de caractères à copier. |
| to | Indique l'adresse à laquelle la chaîne de caractères doit être copiée. |
| maximal | Indique le nombre de caractères à copier. |
| valeur réelle | Indique un paramètre, transmis par référence, qui est mis à jour par le service Copyinstr avec le nombre réel de caractères copiés. |
Descriptif
Le service de noyau Copyinstr permet à un utilisateur de copier des données de type caractère d'un emplacement à un autre. L'emplacement source doit être dans l'espace utilisateur ou être dans l'espace du noyau si l'appelant est un processus de noyau. La destination est dans l'espace du noyau.
Environnement d'exécution
Le service de noyau Copyinstr peut être appelé à partir de Environnement de processus uniquement.
Valeurs renvoyées
| Article | Descriptif |
|---|---|
| 0 % | Indique une opération réussie. |
| E2BIG | Indique un espace insuffisant pour terminer la copie. |
| EIO | Indique qu'une erreur d'E-S permanente s'est produite lors du référencement des données. |
| ENOSPC | Indique que le système de fichiers ou l'espace de pagination est insuffisant. |
| EDÉFAUT | Indique que l'utilisateur ne dispose pas des droits suffisants pour accéder aux données ou que l'adresse indiquée dans le paramètre Uaddr n'est pas valide. |