Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Busdma
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Application programming interfaces for BSD operating systems}} {{lowercase title}} In [[computing]], '''busdma''', '''bus_dma''' and '''bus_space''' is a set of [[application programming interface]]s designed to help make [[device driver]]s less dependent on platform-specific code, thereby allowing the host [[operating system]] to be more easily [[portability (software)|ported]] to new computer hardware.{{r|usenix98|informit-2006}} This is accomplished by having abstractions for [[direct memory access]] (DMA) mapping across popular machine-independent [[computer bus]]es like [[Peripheral Component Interconnect|PCI]], which are used on distinct architectures from [[IA-32]] (NetBSD/i386) to [[DEC Alpha]] (NetBSD/alpha).{{r|usenix98}} Additionally, some devices may come in multiple flavours supporting more than one bus, e.g., [[Industry Standard Architecture|ISA]], [[Extended Industry Standard Architecture|EISA]], [[VESA Local Bus]] and [[Peripheral Component Interconnect|PCI]], still sharing the same core logic irrespective of the bus, and such device drivers would also benefit from this same abstraction.{{r|usenix98|p=Β§1.2|q=1.2. Bus details}} Thus the rationale of busdma is to facilitate maximum [[code reuse]] across a wide range of [[platform (computing)|platforms]].{{r|usenix98|p=Β§5|q=5. Conclusions}} 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 [[Fork (software development)|fork]]ing model used by [[Linux]] ports.{{r|informit-2006}} Originally implemented as the "bus_dma" APIs by the developers of the [[NetBSD]] operating system,{{r|usenix98|bus_dma}} 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{{r|bus_space}} that have been amalgamated into the version of busdma incorporated into FreeBSD. [[DragonFly BSD]] developers are also slowly converting their drivers to use busdma.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)