Servicio de kernel d_map_page
Finalidad
Realiza la correlación DMA específica de la plataforma para una única página.
Sintaxis
#include <sys/dma.h>
#include <sys/xmem.h>
int d_map_page(*handle, flags, baddr, *busaddr, *xmp)
struct d_handle *handle;
int flags;
caddr_t baddr;
uint *busaddr;
struct xmem *xmp;int d_map_page(*handle, flags, baddr, *busaddr, *xmp)
struct d_handle *handle;
int flags;
unsigned long long baddr;
unsigned long long *busaddr;
struct xmem *xmp;Parámetros
| Elemento | Descripción |
|---|---|
| descriptor de contexto | Indica el descriptor de contexto exclusivo devuelto por el servicio de kernel de d_map_init . |
| distintivos | Especifica uno de los siguientes distintivos:
|
| baddr | Especifica la dirección de almacenamiento intermedio. |
| busaddr | Apunta al campo busaddr . |
| xmp | Descriptor de memoria cruzada para el almacenamiento intermedio. |
Descripción
El servicio de kernel de d_map_page es una rutina de programa de utilidad específica del bus determinada por el servicio de kernel de d_map_init o d_map_init_ext que realiza la correlación específica de plataforma de una sola 4KB o menos transferencia para dispositivos maestros DMA. El servicio de kernel de d_map_page es una versión de vía de acceso rápida del servicio d_map_list . Toda la cantidad de transferencia debe caber dentro de una sola página para poder utilizar este servicio. Este servicio acepta una dirección virtual y completa la dirección de bus adecuada para que el dispositivo se utilice en la transferencia DMA. A menos que se establezca el distintivo DMA_BYPASS , este servicio también verifica los permisos de acceso a la página. Si la correlación es a corto plazo (es decir, no se correlaciona tan pronto como se completa la E/S), debe establecer el distintivo DMA_STMAP .
Si el almacenamiento intermedio es un almacenamiento intermedio de espacio de kernel global, el descriptor de memoria cruzada se puede establecer para que apunte al descriptor de memoria cruzada de GLOBAL exportado, xmem_global.
Si la transferencia no se puede correlacionar debido a restricciones de recursos, el servicio de d_map_page devuelve DMA_NORES. Si la transferencia no se puede correlacionar debido a violaciones de acceso a páginas, este servicio devuelve DMA_NOACC.
Valores de retorno
| Elemento | Descripción |
|---|---|
| DMA_NORES | Indica que los recursos no están disponibles. |
| Elemento | Descripción |
|---|---|
| DMA_NOACC | Indica que no hay permiso de acceso a la página. |
| Elemento | Descripción |
|---|---|
| DMA_SUCC | Indica que el parámetro busaddr contiene la dirección de bus que se debe utilizar para la transferencia de dispositivos. |