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.