Servicio de kernel xlate_pin

Finalidad

Fija todas las páginas de un almacenamiento intermedio virtual.

Sintaxis

int xlate_pin (dp, baddr, count, rw)
struct xmem *dp;
caddr_t baddr;
int count;
int rw;

Descripción

El servicio de kernel de xlate_pin fija todas las páginas del almacenamiento intermedio virtual indicado por el parámetro baddr para la longitud de Recuento y también añade información de pretraducción al descriptor de memoria cruzada al que apunta el parámetro dp .

El servicio de kernel de xlate_pin da como resultado un pin de corto plazo, que dará soporte a los almacenamientos intermedios de memoria asignados de mmap y shmatt .

Además de fijar y traducir cada página, los permisos de acceso a la página se verifican de acuerdo con el acceso deseado (según lo especificado por el parámetro rw ). Para un valor de B_READ, debe permitirse el acceso de escritura a la página. Para un valor de B_WRITE, sólo debe permitirse el acceso de lectura a la página.

El llamante puede preasignar estructuras de datos de pretraducción y añadirlas al descriptor de memoria cruzada antes de la llamada (mediante una llamada al servicio de kernel de xlate_create ) o hacer que este servicio asigne las estructuras de datos necesarias. Si el descriptor de memoria cruzada ya es de tipo XMEM_XLATE, se presupone que las estructuras de datos ya están asignadas. Si los llamantes desean que las estructuras de datos de pretraducción persistan en la llamada xlate_unpin subsiguiente, también deben establecer el distintivo XLATE_PERSISTENT en la llamada al servicio de kernel de xlate_create .

Parámetros

Elemento Descripción
dp Apunta al descriptor de memoria cruzada.
baddr Apunta al almacenamiento intermedio virtual.
count Especifica la longitud del almacenamiento intermedio virtual.
rw Especifica los permisos de acceso para cada página.

Valores de retorno

Si es satisfactorio, el servicio de kernel de xlate_pin devuelve 0. Si no se ejecuta correctamente, se devuelve uno de los siguientes:
Elemento Descripción
EINVAL Descriptor o parámetros de memoria cruzada no válidos.
ENOMEM No se puede asignar memoria.
ENOSPC De los recursos de paginación.
XMEM_FAIL Violación de acceso a página.

Entorno de ejecución

El servicio de kernel de xlate_pin sólo se puede llamar desde el entorno de proceso y el descriptor de memoria cruzada debe ser válido.