PURPOSE
• Synchronizes the cache of all CPUs with the DMA buffer, by flushing
the data from the CPU caches.
NOTE: This function should be called before performing a DMA transfer
(see Remarks below).
PROTOTYPE
DWORD WD_DMASyncCpu(
HANDLE hWD,
WD_DMA *pDMA);
PARAMETERS
DESCRIPTION
RETURN VALUE
Returns
WD_STATUS_SUCCESS(0) on success, or
an appropriate error code otherwise [
A].
REMARKS
-
An asynchronous DMA read or write operation accesses data in memory, not in
the processor (CPU) cache, which resides between the CPU and the host's
physical memory. Unless the CPU cache has been flushed, by calling
WD_DMASyncCpu, just before a read transfer, the data
transferred into system memory by the DMA operation could be overwritten
with stale data if the CPU cache is flushed later. Unless the CPU cache has
been flushed by calling WD_DMASyncCpu just before a write
transfer, the data in the CPU cache might be more up-to-date than the copy
in memory.
EXAMPLE
WD_DMASyncCpu(hWD, &dma);