Conceptual
Login

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?