Writing Device Drivers

Bus-Master DMA

In general, the driver should perform the following steps for bus-master DMA.

  1. Describe the DMA attributes. This allows the routines to ensure that the device will be able to access the buffer.

  2. Allocate a DMA handle.

  3. Lock the DMA object in memory (see physio(9F)).

    Note -

    This step is not necessary in block drivers for buffers coming from the file system, as the file system has already locked the data in memory.

  4. Allocate DMA resources for the object.

  5. Program the DMA engine on the device and start it (this is device specific).

    When the transfer is complete, continue the bus master operation.

  6. Perform any required object synchronizations.

  7. Release the DMA resources.

  8. Free the DMA handle.