Servicio de kernel d_sync_mem

Finalidad

Permite que un controlador de dispositivo indique que es posible que sea necesario renovar los almacenamientos intermedios previamente correlacionados.

Sintaxis

int d_sync_mem(d_handle_t handle, dio_t blist)

Descripción

El servicio d_sync_mem permite que un controlador de dispositivo indique que es posible que se deban renovar los almacenamientos intermedios previamente correlacionados, ya sea porque un nuevo DMA está a punto de iniciarse o porque ya se ha completado una DMA anterior. d_sync_mem no es un servicio de kernel exportado, sino un programa de utilidad específico de bus determinado por d_map_init basado en las características de la plataforma y proporcionado al llamante a través de la estructura d_handle . d_sync_mem permite al controlador identificar puntos de coherencia adicionales más allá de los de la correlación inicial (d_map_list) y la terminación de la correlación (d_unmap_list). Por lo tanto, d_sync_mem proporciona un método para los almacenamientos intermedios de correlación a largo plazo y sigue manejando problemas potenciales de coherencia de datos.

El parámetro Blist es un puntero a la estructura dio que describe la correlación inicial, tal como devuelve d_map_list. Tenga en cuenta que para el almacenamiento intermedio de rebote, la dirección de datos también está definida implícitamente por esta correlación inicial.
  • Si la llamada lista_correlaciones describe una transferencia de la memoria del sistema a un dispositivo, las llamadas d_sync_mem subsiguientes que utilicen el Blist correspondiente sincronizarán la vista de memoria. Esto supone que las páginas de memoria del sistema originales contienen los datos correctos.
  • Si la llamada lista_correlaciones describe una transferencia desde un dispositivo a la memoria del sistema, las llamadas posteriores de d_sync_mem sincronizarán la vista de memoria. Esto supone que las páginas de rebote al que accedió el dispositivo contenían los datos correctos.
Nota: Puede utilizar la macro D_SYNC_MEM proporcionada en el archivo /usr/include/sys/dma.h para codificar las llamadas al servicio de kernel d_sync_mem .

Parámetros

Elemento Descripción
d_handle_t Indica el descriptor de dma exclusivo devuelto por d_map_init.
dio_t blist Lista de vectores devueltos por d_map_listoriginal.

Valores de retorno

Elemento Descripción
DMA_SUCC Los almacenamientos intermedios descritos por Blist se han sincronizado.
DMA_FAIL Los almacenamientos intermedios no se han podido sincronizar.