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
| 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.