Servicio de kernel copyinstr
Finalidad
Copia una serie de caracteres (incluido el carácter nulo de terminación) del usuario al espacio del kernel.
Sintaxis
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/uio.h>
En el kernel de 32 bits, la sintaxis del servicio de kernel de copyinstr es:
int copyinstr (from, to, max, actual)
caddr_t from;
caddr_t to;
uint max;
uint *actual;
En el kernel de 64 bits, la sintaxis de la subrutina copyinstr es:
int copyinstr (from, to, max, actual)
void *from;
void *to;
size_t max;
size_t *actual;
Parámetros
| Elemento | Descripción |
|---|---|
| desde | Especifica la dirección de la serie de caracteres que se va a copiar. |
| por: | Especifica la dirección a la que se copiará la serie de caracteres. |
| máx | Especifica el número de caracteres que se deben copiar. |
| consumo real | Especifica un parámetro, pasado por referencia, que el servicio copyinstr actualiza con el número real de caracteres copiados. |
Descripción
El servicio de kernel de copyinstr permite a un usuario copiar datos de caracteres de una ubicación a otra. La ubicación de origen debe estar en el espacio de usuario o puede estar en el espacio del kernel si el llamante es un proceso de kernel. El destino está en el espacio del kernel.
Entorno de ejecución
El servicio de kernel de copyinstr sólo se puede llamar desde entorno de proceso .
Valores de retorno
| Elemento | Descripción |
|---|---|
| 0 | Indica una operación satisfactoria. |
| E2BIG | Indica espacio insuficiente para completar la copia. |
| EIO | Indica que se ha producido un error de E/S permanente al hacer referencia a los datos. |
| ENOSPC | Indica un sistema de archivos o espacio de paginación insuficiente. |
| EFAULT | Indica que el usuario no tiene autorización suficiente para acceder a los datos o que la dirección especificada en el parámetro udadr no es válida. |