A Machine-Independent DMA Framework for NetBSD
Jason R. Thorpe · 1998
One of the challenges in implementing a portable kernel is finding good abstractions for semanticallysimilar operations which often have very machinedependent implementations. This is especially important on modern machines which share common architectural features, e.g. the PCI bus. This paper describes whyamachine-independent DMA mapping abstraction is needed, the design considerations for such an abstraction, and the implementation of this abstraction in the NetBSD/alpha and NetBSD/i386 kernels. 1. Introduction NetBSD is a portable, modern UNIX-likeoperating system which currently runs on eighteen platforms covering nine processor architectures. Some of these platforms, including the Alpha and i386 2 ,share the PCI busasacommon architectural feature. In order to share device drivers for PCI devices between different platforms, abstractions that hide the details of bus access must be invented. The details that must be hidden can be broken down into twoclasses: CPU access to devic...