1918:
87:, 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
125:
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.
98:
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
1978:
1778:
935:
648:
181:
76:
2013:
992:
1959:
1564:
1798:
1660:
1369:
1108:
980:
663:
619:
173:
1311:
1123:
723:
84:
60:
36:
1274:
455:
160:
1254:
2008:
1704:
871:
599:
72:
1269:
1264:
755:
1595:
99:
411:
215:
1346:
1145:
236:
156:
917:
71:(NetBSD/alpha). Additionally, some devices may come in multiple flavours supporting more than one bus, e.g.,
1952:
1620:
1557:
1341:
815:
770:
361:
169:
2003:
1793:
1665:
1098:
1038:
950:
792:
668:
550:
48:
1983:
1881:
1652:
1304:
843:
716:
569:
1766:
1751:
1692:
1476:
1224:
1132:
876:
636:
448:
210:
92:
52:
339:
2018:
1756:
1709:
1379:
907:
504:
1945:
1608:
1601:
1550:
1515:
1103:
775:
760:
1083:
1078:
750:
1929:
1998:
1993:
1770:
1739:
1582:
1399:
1297:
1093:
927:
895:
709:
640:
614:
44:
1988:
1788:
1531:
945:
866:
658:
441:
415:
205:
1897:
1729:
1384:
1209:
1073:
1068:
678:
604:
80:
1972:
1818:
1682:
1590:
1573:
1494:
1434:
1157:
975:
883:
805:
765:
683:
587:
330:
260:
126:
40:
1876:
1744:
1633:
1499:
1204:
1048:
900:
828:
56:
1808:
1719:
1677:
1672:
1648:
1177:
1113:
970:
565:
555:
1869:
1803:
1446:
1259:
1152:
1088:
960:
856:
88:
310:
1424:
1419:
68:
20:
240:
51:
to new computer hardware. This is accomplished by having abstractions for
408:
1813:
1471:
1414:
1409:
1404:
1389:
1214:
1187:
1182:
1172:
1167:
1028:
965:
955:
673:
530:
421:
403:
390:
170:
Proceedings of the FREENIX Track: 1998 USENIX Annual
Technical Conference
1917:
1542:
1859:
1697:
1638:
1429:
1336:
1321:
1249:
1192:
1162:
1023:
1018:
912:
742:
733:
626:
326:
322:
256:
252:
118:
114:
1289:
701:
109:
Originally implemented as the "bus_dma" APIs by the developers of the
1864:
1854:
1849:
1839:
1724:
1628:
1439:
1394:
1364:
1199:
1043:
1033:
1013:
985:
823:
688:
577:
545:
540:
496:
480:
465:
433:
350:
318:
291:
248:
110:
43:
less dependent on platform-specific code, thereby allowing the host
280:
269:
129:
developers are also slowly converting their drivers to use busdma.
1844:
1734:
1687:
1456:
1451:
1237:
1232:
888:
833:
609:
592:
509:
103:
64:
1925:
1783:
1714:
1466:
1461:
1374:
1245:
940:
861:
851:
800:
653:
582:
514:
402:— NetBSD, FreeBSD, OpenBSD and DragonFly BSD Kernel Developer's
389:— NetBSD, FreeBSD, OpenBSD and DragonFly BSD Kernel Developer's
241:"bus_dma, … — Bus and Machine Independent DMA Mapping Interface"
1546:
1293:
705:
437:
397:
1241:
1140:
384:
121:
and their derivatives; with FreeBSD incorporating it under a
16:
Application programming interfaces for BSD operating systems
1933:
409:
FreeBSD busdma and SMPng driver conversion project page
1890:
1827:
1765:
1647:
1619:
1581:
1524:
1508:
1487:
1357:
1329:
1223:
1131:
1122:
1061:
1001:
926:
842:
814:
791:
784:
741:
635:
564:
523:
489:
473:
311:"bus_space, … — bus space manipulation functions"
182:"A Machine-Independent DMA Framework for Net BSD"
55:(DMA) mapping across popular machine-independent
63:, which are used on distinct architectures from
199:
197:
162:A Machine-Independent DMA Framework for NetBSD
1953:
1558:
1305:
717:
449:
113:operating system, busdma has been adopted by
8:
1960:
1946:
1565:
1551:
1543:
1312:
1298:
1290:
1128:
788:
724:
710:
702:
456:
442:
434:
150:
148:
146:
144:
142:
138:
7:
1914:
1912:
1979:Application programming interfaces
1932:. You can help Knowledge (XXG) by
37:application programming interfaces
14:
309:Christopher G. Demetriou (1997).
1916:
206:"NetBSD: Not Just for Toasters"
363:DragonFly On-Line Manual Pages
293:DragonFly On-Line Manual Pages
1:
756:FreeBSD Documentation License
204:David Chisnall (2006-10-06).
2014:Operating system technology
1596:Light Weight Kernel Threads
2035:
1911:
352:OpenBSD manual page server
282:OpenBSD manual page server
216:Prentice Hall Professional
237:NASA Ames Research Center
157:NASA Ames Research Center
918:Highly Available STorage
279:"BUS_DMAMAP_CREATE(9)".
1621:OS-level virtualisation
91:across a wide range of
1928:-related article is a
1099:Marshall Kirk McKusick
39:designed to help make
2009:Operating system APIs
341:FreeBSD Manual Pages
271:FreeBSD Manual Pages
53:direct memory access
1275:PlayStation Vita OS
315:BSD Cross Reference
245:BSD Cross Reference
1609:Kernel Normal Form
1602:serializing tokens
1516:OpenBSD Foundation
1255:Nintendo Switch OS
1104:Diomidis Spinellis
776:Kernel Normal Form
761:FreeBSD Foundation
524:Notable subsystems
414:2010-07-29 at the
47:to be more easily
1941:
1940:
1906:
1905:
1540:
1539:
1347:security features
1287:
1286:
1283:
1282:
1079:Poul-Henning Kamp
1057:
1056:
751:FreeBSD Core Team
699:
698:
67:(NetBSD/i386) to
2026:
1962:
1955:
1948:
1920:
1913:
1583:Operating system
1567:
1560:
1553:
1544:
1358:Related projects
1330:Operating system
1314:
1307:
1300:
1291:
1270:PlayStation 4 OS
1265:PlayStation 3 OS
1129:
789:
726:
719:
712:
703:
490:Related projects
474:Operating system
458:
451:
444:
435:
430:
427:
425:
423:
401:
400:
388:
387:
370:
367:
360:"BUS_SPACE(9)".
356:
349:"BUS_SPACE(9)".
345:
338:"BUS_SPACE(9)".
334:
306:
300:
297:
286:
275:
264:
235:Jason R Thorpe;
232:
226:
225:
223:
222:
201:
192:
189:
177:
167:
155:Jason R Thorpe;
152:
45:operating system
2034:
2033:
2029:
2028:
2027:
2025:
2024:
2023:
1969:
1968:
1967:
1966:
1909:
1907:
1902:
1886:
1823:
1761:
1643:
1615:
1577:
1571:
1541:
1536:
1532:OpenBSD Journal
1520:
1504:
1483:
1353:
1342:version history
1325:
1318:
1288:
1279:
1219:
1118:
1053:
997:
922:
838:
810:
780:
771:Version History
737:
730:
700:
695:
631:
560:
519:
485:
469:
462:
420:
416:Wayback Machine
396:
395:
383:
382:
379:
374:
373:
359:
348:
337:
308:
307:
303:
289:
278:
267:
234:
233:
229:
220:
218:
203:
202:
195:
180:
165:
154:
153:
140:
135:
17:
12:
11:
5:
2032:
2030:
2022:
2021:
2016:
2011:
2006:
2001:
1996:
1991:
1986:
1981:
1971:
1970:
1965:
1964:
1957:
1950:
1942:
1939:
1938:
1921:
1904:
1903:
1901:
1900:
1898:Matthew Dillon
1894:
1892:
1888:
1887:
1885:
1884:
1879:
1874:
1873:
1872:
1862:
1857:
1852:
1847:
1842:
1837:
1831:
1829:
1825:
1824:
1822:
1821:
1816:
1811:
1806:
1801:
1796:
1791:
1786:
1781:
1779:802.11 drivers
1775:
1773:
1763:
1762:
1760:
1759:
1754:
1749:
1748:
1747:
1737:
1732:
1727:
1722:
1717:
1712:
1707:
1702:
1701:
1700:
1690:
1685:
1680:
1675:
1670:
1669:
1668:
1657:
1655:
1645:
1644:
1642:
1641:
1636:
1631:
1625:
1623:
1617:
1616:
1614:
1613:
1612:
1611:
1606:
1605:
1604:
1587:
1585:
1579:
1578:
1572:
1570:
1569:
1562:
1555:
1547:
1538:
1537:
1535:
1534:
1528:
1526:
1522:
1521:
1519:
1518:
1512:
1510:
1506:
1505:
1503:
1502:
1497:
1491:
1489:
1485:
1484:
1482:
1481:
1480:
1479:
1469:
1464:
1459:
1454:
1449:
1444:
1443:
1442:
1432:
1427:
1422:
1417:
1412:
1407:
1402:
1397:
1392:
1387:
1382:
1377:
1372:
1367:
1361:
1359:
1355:
1354:
1352:
1351:
1350:
1349:
1344:
1333:
1331:
1327:
1326:
1319:
1317:
1316:
1309:
1302:
1294:
1285:
1284:
1281:
1280:
1278:
1277:
1272:
1267:
1262:
1257:
1252:
1235:
1229:
1227:
1221:
1220:
1218:
1217:
1212:
1210:Gentoo/FreeBSD
1207:
1202:
1197:
1196:
1195:
1190:
1180:
1175:
1170:
1165:
1160:
1155:
1150:
1149:
1148:
1137:
1135:
1126:
1120:
1119:
1117:
1116:
1111:
1106:
1101:
1096:
1091:
1086:
1081:
1076:
1074:Jordan Hubbard
1071:
1069:Matthew Dillon
1065:
1063:
1059:
1058:
1055:
1054:
1052:
1051:
1046:
1041:
1036:
1031:
1026:
1021:
1016:
1011:
1005:
1003:
999:
998:
996:
995:
990:
989:
988:
983:
973:
968:
963:
958:
953:
948:
943:
938:
936:802.11 drivers
932:
930:
924:
923:
921:
920:
915:
910:
905:
904:
903:
893:
892:
891:
881:
880:
879:
874:
869:
864:
859:
848:
846:
840:
839:
837:
836:
831:
826:
820:
818:
816:Virtualisation
812:
811:
809:
808:
803:
797:
795:
786:
782:
781:
779:
778:
773:
768:
763:
758:
753:
747:
745:
739:
738:
731:
729:
728:
721:
714:
706:
697:
696:
694:
693:
692:
691:
681:
676:
671:
666:
661:
656:
651:
649:802.11 drivers
645:
643:
633:
632:
630:
629:
624:
623:
622:
612:
607:
602:
597:
596:
595:
585:
580:
574:
572:
562:
561:
559:
558:
553:
548:
543:
538:
533:
527:
525:
521:
520:
518:
517:
512:
507:
502:
499:
493:
491:
487:
486:
484:
483:
477:
475:
471:
470:
463:
461:
460:
453:
446:
438:
432:
431:
428:/UnifiedBusDma
418:
406:
393:
378:
377:External links
375:
372:
371:
369:
368:
357:
346:
301:
299:
298:
290:"BUS_DMA(9)".
287:
276:
268:"BUS_DMA(9)".
227:
193:
191:
190:
137:
136:
134:
131:
102:model used by
81:VESA Local Bus
57:computer buses
41:device drivers
15:
13:
10:
9:
6:
4:
3:
2:
2031:
2020:
2017:
2015:
2012:
2010:
2007:
2005:
2004:DragonFly BSD
2002:
2000:
1997:
1995:
1992:
1990:
1987:
1985:
1982:
1980:
1977:
1976:
1974:
1963:
1958:
1956:
1951:
1949:
1944:
1943:
1937:
1935:
1931:
1927:
1922:
1919:
1915:
1910:
1899:
1896:
1895:
1893:
1889:
1883:
1880:
1878:
1875:
1871:
1868:
1867:
1866:
1863:
1861:
1858:
1856:
1853:
1851:
1848:
1846:
1843:
1841:
1838:
1836:
1833:
1832:
1830:
1826:
1820:
1817:
1815:
1812:
1810:
1807:
1805:
1802:
1800:
1797:
1795:
1792:
1790:
1787:
1785:
1782:
1780:
1777:
1776:
1774:
1772:
1768:
1764:
1758:
1755:
1753:
1750:
1746:
1743:
1742:
1741:
1738:
1736:
1733:
1731:
1728:
1726:
1723:
1721:
1718:
1716:
1713:
1711:
1708:
1706:
1703:
1699:
1696:
1695:
1694:
1691:
1689:
1686:
1684:
1681:
1679:
1676:
1674:
1671:
1667:
1664:
1663:
1662:
1659:
1658:
1656:
1654:
1650:
1646:
1640:
1637:
1635:
1632:
1630:
1627:
1626:
1624:
1622:
1618:
1610:
1607:
1603:
1599:
1598:
1597:
1594:
1593:
1592:
1591:DragonFly BSD
1589:
1588:
1586:
1584:
1580:
1575:
1574:DragonFly BSD
1568:
1563:
1561:
1556:
1554:
1549:
1548:
1545:
1533:
1530:
1529:
1527:
1523:
1517:
1514:
1513:
1511:
1509:Organizations
1507:
1501:
1498:
1496:
1495:Theo de Raadt
1493:
1492:
1490:
1486:
1478:
1475:
1474:
1473:
1470:
1468:
1465:
1463:
1460:
1458:
1455:
1453:
1450:
1448:
1445:
1441:
1438:
1437:
1436:
1433:
1431:
1428:
1426:
1423:
1421:
1418:
1416:
1413:
1411:
1408:
1406:
1403:
1401:
1398:
1396:
1393:
1391:
1388:
1386:
1383:
1381:
1378:
1376:
1373:
1371:
1368:
1366:
1363:
1362:
1360:
1356:
1348:
1345:
1343:
1340:
1339:
1338:
1335:
1334:
1332:
1328:
1323:
1315:
1310:
1308:
1303:
1301:
1296:
1295:
1292:
1276:
1273:
1271:
1268:
1266:
1263:
1261:
1260:OpenServer 10
1258:
1256:
1253:
1251:
1247:
1243:
1239:
1236:
1234:
1231:
1230:
1228:
1226:
1222:
1216:
1213:
1211:
1208:
1206:
1203:
1201:
1198:
1194:
1191:
1189:
1186:
1185:
1184:
1181:
1179:
1176:
1174:
1171:
1169:
1166:
1164:
1161:
1159:
1158:DragonFly BSD
1156:
1154:
1151:
1147:
1144:
1143:
1142:
1139:
1138:
1136:
1134:
1130:
1127:
1125:
1121:
1115:
1112:
1110:
1109:Robert Watson
1107:
1105:
1102:
1100:
1097:
1095:
1092:
1090:
1087:
1085:
1082:
1080:
1077:
1075:
1072:
1070:
1067:
1066:
1064:
1060:
1050:
1047:
1045:
1042:
1040:
1037:
1035:
1032:
1030:
1027:
1025:
1022:
1020:
1017:
1015:
1012:
1010:
1007:
1006:
1004:
1000:
994:
991:
987:
984:
982:
979:
978:
977:
974:
972:
969:
967:
964:
962:
959:
957:
954:
952:
949:
947:
944:
942:
939:
937:
934:
933:
931:
929:
925:
919:
916:
914:
911:
909:
906:
902:
899:
898:
897:
894:
890:
887:
886:
885:
882:
878:
875:
873:
870:
868:
865:
863:
860:
858:
855:
854:
853:
850:
849:
847:
845:
841:
835:
832:
830:
827:
825:
822:
821:
819:
817:
813:
807:
806:ULE scheduler
804:
802:
799:
798:
796:
794:
790:
787:
783:
777:
774:
772:
769:
767:
766:FreeBSD Ports
764:
762:
759:
757:
754:
752:
749:
748:
746:
744:
740:
735:
727:
722:
720:
715:
713:
708:
707:
704:
690:
687:
686:
685:
682:
680:
677:
675:
672:
670:
667:
665:
662:
660:
657:
655:
652:
650:
647:
646:
644:
642:
638:
634:
628:
625:
621:
618:
617:
616:
613:
611:
608:
606:
603:
601:
598:
594:
591:
590:
589:
586:
584:
581:
579:
576:
575:
573:
571:
567:
563:
557:
554:
552:
549:
547:
544:
542:
539:
537:
534:
532:
529:
528:
526:
522:
516:
513:
511:
508:
506:
503:
500:
498:
495:
494:
492:
488:
482:
479:
478:
476:
472:
467:
459:
454:
452:
447:
445:
440:
439:
436:
429:
419:
417:
413:
410:
407:
405:
399:
394:
392:
386:
381:
380:
376:
365:
364:
358:
354:
353:
347:
343:
342:
336:
335:
332:
331:DragonFly BSD
328:
324:
320:
316:
312:
305:
302:
295:
294:
288:
284:
283:
277:
273:
272:
266:
265:
262:
261:DragonFly BSD
258:
254:
250:
246:
242:
238:
231:
228:
217:
213:
212:
207:
200:
198:
194:
187:
183:
179:
178:
175:
171:
164:
163:
158:
151:
149:
147:
145:
143:
139:
132:
130:
128:
127:DragonFly BSD
124:
120:
116:
112:
107:
105:
101:
96:
94:
90:
86:
82:
78:
74:
70:
66:
62:
58:
54:
50:
46:
42:
38:
34:
30:
26:
22:
1984:BSD software
1934:expanding it
1923:
1908:
1834:
1745:soft updates
1649:File systems
1525:Publications
1500:Niels Provos
1205:GNU/kFreeBSD
1008:
901:Soft updates
566:File systems
535:
398:bus_space(9)
362:
351:
340:
314:
304:
292:
281:
270:
244:
230:
219:. Retrieved
209:
185:
161:
122:
108:
97:
35:is a set of
32:
28:
24:
18:
1225:proprietary
1178:MidnightBSD
1133:open-source
1124:Derivatives
1114:Dru Lavigne
1094:Sam Leffler
1084:Mike Karels
556:Rump kernel
2019:Unix stubs
1973:Categories
1870:hw.sensors
1828:Subsystems
1771:networking
1153:DesktopBSD
1089:Ben Laurie
928:Networking
793:Scheduling
785:Subsystems
641:networking
385:bus_dma(9)
221:2019-07-25
133:References
89:code reuse
1789:Bluetooth
1767:Firewalls
1683:disklabel
1425:OpenSMTPD
1420:OpenOSPFD
946:Bluetooth
884:disklabel
659:Bluetooth
637:Firewalls
588:disklabel
93:platforms
69:DEC Alpha
33:bus_space
21:computing
1814:netgraph
1472:Xenocara
1415:OpenNTPD
1410:OpenIKED
1405:OpenBGPD
1390:LibreSSL
1215:XigmaNAS
1188:OPNsense
1183:m0n0wall
1173:GhostBSD
1168:FreeSBIE
1029:portsnap
966:Netgraph
956:IPFilter
674:IPFilter
531:Veriexec
424:.freebsd
412:Archived
239:(1997).
211:InformIT
159:(1998).
1999:OpenBSD
1994:FreeBSD
1860:OpenPAM
1698:HAMMER2
1653:storage
1639:vkernel
1576:Project
1447:sensors
1430:OpenSSH
1337:OpenBSD
1324:Project
1322:OpenBSD
1250:watchOS
1193:pfSense
1163:FreeNAS
1024:OpenBSM
1019:OpenPAM
844:Storage
743:FreeBSD
736:Project
734:FreeBSD
627:OpenZFS
570:storage
468:Project
404:Manuals
391:Manuals
327:OpenBSD
323:FreeBSD
257:OpenBSD
253:FreeBSD
188:. 1998.
119:FreeBSD
115:OpenBSD
106:ports.
100:forking
29:bus_dma
1989:NetBSD
1891:People
1877:systat
1865:sysctl
1855:moused
1850:kqueue
1840:DPorts
1835:busdma
1725:procfs
1693:HAMMER
1673:autofs
1629:chroot
1488:People
1440:pfsync
1395:mandoc
1248:, and
1200:TrueOS
1146:Darwin
1062:People
1049:systat
1044:moused
1034:kqueue
1014:DTrace
1009:busdma
986:pfsync
824:chroot
689:pfsync
578:bioctl
546:envsys
541:DTrace
536:busdma
501:netpgp
497:pkgsrc
481:NetBSD
466:NetBSD
319:NetBSD
249:NetBSD
186:Usenix
174:USENIX
123:busdma
111:NetBSD
49:ported
25:busdma
1924:This
1882:SMBus
1845:ioctl
1752:Vinum
1735:tmpfs
1730:PUFFS
1688:fdisk
1678:devfs
1600:LWKT
1457:spamd
1452:sndio
1380:httpd
1238:macOS
1233:Junos
1002:Other
889:fdisk
877:vinum
857:raid5
834:bhyve
620:WAPBL
610:tmpfs
605:PUFFS
593:fdisk
510:tnftp
166:(PDF)
104:Linux
65:IA-32
59:like
1930:stub
1926:Unix
1809:NDIS
1804:ipfw
1799:CARP
1784:ALTQ
1720:NVMe
1715:NTFS
1705:LVM2
1661:AHCI
1634:jail
1467:tmux
1462:sudo
1375:doas
1370:CARP
1320:The
1246:tvOS
993:SCTP
981:CARP
971:NDIS
961:ipfw
941:ALTQ
872:LVM2
867:geli
862:GBDE
852:GEOM
829:jail
801:ALTQ
732:The
664:CARP
654:ALTQ
639:and
600:LVM2
583:CHFS
568:and
515:tcsh
464:The
426:.org
422:wiki
83:and
77:EISA
31:and
1794:BPF
1757:VFS
1740:UFS
1710:NFS
1666:NCQ
1477:cwm
1385:fdm
1365:bio
1242:iOS
1141:XNU
1039:KLD
951:BPF
913:ZFS
908:VFS
896:UFS
679:NPF
669:BPF
615:UFS
551:LKM
505:pcc
85:PCI
73:ISA
61:PCI
19:In
1975::
1819:PF
1769:,
1651:,
1435:PF
1400:mg
1244:,
1240:,
976:pf
684:PF
329:,
325:,
321:,
317:.
313:.
259:,
255:,
251:,
247:.
243:.
214:.
208:.
196:^
184:.
172:.
168:.
141:^
117:,
95:.
79:,
75:,
27:,
23:,
1961:e
1954:t
1947:v
1936:.
1566:e
1559:t
1552:v
1313:e
1306:t
1299:v
725:e
718:t
711:v
457:e
450:t
443:v
366:.
355:.
344:.
333:.
296:.
285:.
274:.
263:.
224:.
176:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.