Moving a Buffer to the Card with Direct Memory Access
Copying data a word at a time through the processor is slow, so devices are usually told an address and left to fetch the data themselves. Here you allocate a buffer the card is allowed to reach, fill it, program the source, destination, length and command registers to have the card pull it into its own memory, then reverse the direction to bring it back, and check that what returned is what you sent. After this stage you can move bulk data between memory and a device, which is how storage, network and graphics drivers earn their keep.
Questions this Concept answers
- Why does the driver program a bus address into the source register rather than the pointer it uses in kernel code?
docs/specs/edu.txt - qemu
Copying data by having the processor move it one word at a time wastes the processor. Instead the driver tells the device where the data is, where it should go, and how much of it there is, and the d…