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
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. ==References== {{Reflist |refs= <ref name=usenix98>{{cite conference |author= Jason R Thorpe |author2= NASA Ames Research Center |author2-link= NASA Ames Research Center |date= 1998 |url= https://www.usenix.org/legacy/publications/library/proceedings/usenix98/freenix/thorpe_dma.pdf |title= A Machine-Independent DMA Framework for NetBSD |conference= Proceedings of the FREENIX Track: 1998 USENIX Annual Technical Conference |conference-url= https://www.usenix.org/legacy/publications/library/proceedings/usenix98/ |publisher= [[USENIX Annual Technical Conference|USENIX]] }} *{{cite journal |title=A Machine-Independent DMA Framework for Net BSD |url=https://www.usenix.org/conference/1998-usenix-annual-technical-conference/machine-independent-dma-framework-net-bsd |website=Usenix|year=1998 }}</ref> <ref name=bus_dma>{{cite web |author1= Jason R Thorpe |author2= NASA Ames Research Center |author2-link= NASA Ames Research Center |date= 1997 |url= http://bxr.su/n/share/man/man9/bus_dma.9 |title= bus_dma, β¦ β Bus and Machine Independent DMA Mapping Interface |website= BSD Cross Reference |publisher= [[NetBSD]], [[FreeBSD]], [[OpenBSD]], [[DragonFly BSD]] }} *{{cite book |section=BUS_DMA(9) |title=FreeBSD Manual Pages |url=http://mdoc.su/FreeBSD/bus_dma.9}} *{{cite book |section=BUS_DMAMAP_CREATE(9) |title=OpenBSD manual page server |url=http://mdoc.su/OpenBSD/bus_dma.9}} *{{cite book |section=BUS_DMA(9) |title=DragonFly On-Line Manual Pages |url=http://mdoc.su/DragonFly/bus_dma.9}}</ref> <ref name=bus_space>{{cite web |author= Christopher G. Demetriou |date= 1997 |url= http://bxr.su/n/share/man/man9/bus_space.9 |title= bus_space, β¦ β bus space manipulation functions |website= BSD Cross Reference |publisher= [[NetBSD]], [[FreeBSD]], [[OpenBSD]], [[DragonFly BSD]] }} *{{cite book |section=BUS_SPACE(9) |title=FreeBSD Manual Pages |url=https://www.freebsd.org/cgi/man.cgi?query=bus_space&sektion=9}} *{{cite book |section=BUS_SPACE(9) |title=OpenBSD manual page server |url=http://man.openbsd.org/bus_space.9}} *{{cite book |section=BUS_SPACE(9) |title=DragonFly On-Line Manual Pages |url=https://www.dragonflybsd.org/cgi/web-man?command=bus_space§ion=9}}</ref> <ref name= informit-2006 >{{cite web |author= David Chisnall |date= 2006-10-06 |url= http://www.informit.com/articles/printerfriendly/655422 |title= NetBSD: Not Just for Toasters |publisher= [[Prentice Hall Professional]] |website= [[InformIT (publisher)|InformIT]] |access-date= 2019-07-25 }}</ref> }} ==External links== *<code>{{URL|http://mdoc.su/-/bus_dma.9|bus_dma(9)}}</code> β NetBSD, FreeBSD, OpenBSD and DragonFly BSD Kernel Developer's [[man page|Manual]]s *<code>{{URL|http://mdoc.su/-/bus_space.9|bus_space(9)}}</code> β NetBSD, FreeBSD, OpenBSD and DragonFly BSD Kernel Developer's [[man page|Manual]]s *[http://www.freebsd.org/projects/busdma/ FreeBSD busdma and SMPng driver conversion project page] {{Webarchive|url=https://web.archive.org/web/20100729125804/http://www.freebsd.org/projects/busdma/ |date=2010-07-29 }} *{{URL|https://wiki.freebsd.org/UnifiedBusDma}} {{NetBSD}} {{FreeBSD}} {{OpenBSD}} {{DragonFly}} [[Category:Application programming interfaces]] [[Category:BSD software]] [[Category:NetBSD]] [[Category:FreeBSD]] [[Category:OpenBSD]] [[Category:DragonFly BSD]] [[Category:Operating system APIs]] [[Category:Operating system technology]] {{unix-stub}}
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)
Pages transcluded onto the current version of this page
(
help
)
:
Template:DragonFly
(
edit
)
Template:FreeBSD
(
edit
)
Template:Lowercase title
(
edit
)
Template:Main other
(
edit
)
Template:NetBSD
(
edit
)
Template:OpenBSD
(
edit
)
Template:R
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:URL
(
edit
)
Template:Unix-stub
(
edit
)
Template:Webarchive
(
edit
)