Misplaced Pages

busdma

Article snapshot taken from[REDACTED] with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Application programming interfaces for BSD operating systems

In computing, busdma, bus_dma and bus_space is a set of application programming interfaces designed to help make device drivers less dependent on platform-specific code, thereby allowing the host operating system to be more easily ported to new computer hardware. This is accomplished by having abstractions for direct memory access (DMA) mapping across popular machine-independent computer buses like PCI, which are used on distinct architectures from IA-32 (NetBSD/i386) to DEC Alpha (NetBSD/alpha). Additionally, some devices may come in multiple flavours supporting more than one bus, e.g., ISA, EISA, VESA Local Bus and PCI, still sharing the same core logic irrespective of the bus, and such device drivers would also benefit from this same abstraction. Thus the rationale of busdma is to facilitate maximum code reuse across a wide range of platforms.

Circa 2006, bus and DMA abstractions made it possible for NetBSD to support 50 hardware platforms and 14 CPU architectures out of a single source tree, compared to the forking model used by Linux ports.

Originally implemented as the "bus_dma" APIs by the developers of the NetBSD operating system, busdma has been adopted by OpenBSD, FreeBSD and their derivatives; with FreeBSD incorporating it under a busdma umbrella (without an underscore). Both NetBSD and OpenBSD have additional "bus_space" APIs that have been amalgamated into the version of busdma incorporated into FreeBSD. DragonFly BSD developers are also slowly converting their drivers to use busdma.

References

  1. ^ Jason R Thorpe; NASA Ames Research Center (1998). A Machine-Independent DMA Framework for NetBSD (PDF). Proceedings of the FREENIX Track: 1998 USENIX Annual Technical Conference. USENIX.
  2. ^ David Chisnall (2006-10-06). "NetBSD: Not Just for Toasters". InformIT. Prentice Hall Professional. Retrieved 2019-07-25.
  3. Jason R Thorpe; NASA Ames Research Center (1997). "bus_dma, … — Bus and Machine Independent DMA Mapping Interface". BSD Cross Reference. NetBSD, FreeBSD, OpenBSD, DragonFly BSD.
  4. Christopher G. Demetriou (1997). "bus_space, … — bus space manipulation functions". BSD Cross Reference. NetBSD, FreeBSD, OpenBSD, DragonFly BSD.

External links

The NetBSD Project
Operating system
Related projects
Notable subsystems
File systems and storage
Firewalls and networking
The FreeBSD Project
FreeBSD
Subsystems
Scheduling
Virtualisation
Storage
Networking
Other
People
Derivatives
open-source
proprietary
The OpenBSD Project
Operating system
Related projects
People
Organizations
Publications
DragonFly BSD Project
Operating system
OS-level virtualisation
File systems, storage
Firewalls, networking
Subsystems
People


Stub icon

This Unix-related article is a stub. You can help Misplaced Pages by expanding it.

Categories:
busdma Add topic