Diamond dynamically assigns DMA channels DMA4–DMA7 to operations using Sundance peripherals (SDBs, for example). If a new concurrent I/O operation is started and no suitable DMA channel is free, CPU interrupts are used for the transfer until one of the necessary DMA channel is released (whereupon that channel is claimed by an active I/O operation that does not have one).
Any number of concurrent link I/O operations can be handled in this way.
This dynamic assignment of DMA channels to I/O operations means that if you want to control a DMA channel directly, you must explicitly claim it from the kernel using the DMA functions.
|