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