Changes between Version 3 and Version 4 of dma_device_api
- Timestamp:
- Jan 26, 2020, 6:44:17 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
dma_device_api
v3 v4 5 5 == __A) General principles__ == 6 6 7 This device allows the kernel to accelerate memory copy of a remote cluster ''source'' to another remote cluster ''destination'', when the architecture contains dedicated hardware accelerators. It can be multi-channel devices, supporting several parallel transfers, and these devices can be ''internal'' devices, replicated in all clusters. 7 This device allows the kernel to accelerate memory copies from a remote cluster ''source'' to another remote cluster ''destination'', when the architecture contains dedicated DMA hardware accelerators. It can be multi-channel devices, supporting several parallel transfers, and these devices can be ''internal'' devices, replicated in all clusters. 8 It can exist one ''chdev'' descriptor per cluster and per channel. 8 9 9 The "kernel" API contains two, synchronous and asynchronous, operation types, detailed in section C below.10 The "kernel" API contains two, ''synchronous'' and ''asynchronous'', operation types, detailed in section C below. 10 11 11 12 The '''asynchronous''' operation is not directly executed by the client thread. The requests are registered in the waiting queue rooted in the DMA chdev descriptor. These requests are actually handled by a dedicated server thread running in the cluster containing the DMA chdev descriptor. This server thread calls the blocking ''ioc_driver_cmd()'' function for each registered request. The driver is supposed to deschedule the server thread after launching the DMA transfer, to wait the transfer completion.