busdma - busdma

W obliczeniowej , busdma , bus_dma i bus_space to zestaw interfejsów programowania aplikacji zaprojektowanych aby pomóc sterowników mniej zależne od konkretnej platformy kodu, umożliwiając hosta systemu operacyjnego , aby być bardziej łatwo przeniesione do nowego sprzętu komputerowego. Jest to osiągane dzięki mapowaniu bezpośredniego dostępu do pamięci (DMA) przez popularne, niezależne od komputera magistrale komputerowe, takie jak PCI , które są używane w różnych architekturach od IA-32 (NetBSD/i386) do DEC Alpha (NetBSD/alpha). Dodatkowo, niektóre urządzenia mogą występować w wielu odmianach obsługujących więcej niż jedną magistralę, np. ISA , EISA , VESA Local Bus i PCI , nadal dzieląc tę ​​samą logikę rdzenia niezależnie od magistrali, a takie sterowniki urządzeń również skorzystałyby z tej samej abstrakcji. W ten sposób uzasadnieniem busdma jest ułatwienie maksymalnego ponownego wykorzystania kodu na wielu różnych platformach .

Około 2006 roku abstrakcje magistrali i DMA umożliwiły NetBSD obsługę 50 platform sprzętowych i 14 architektur CPU z jednego drzewa źródłowego, w porównaniu z modelem forkingu używanym przez porty Linuksa .

Pierwotnie zaimplementowany jako API "bus_dma" przez twórców systemu operacyjnego NetBSD , busdma został zaadoptowany przez OpenBSD , FreeBSD i ich pochodne; z FreeBSD zawierającym go pod parasolem busdma (bez podkreślenia). Zarówno NetBSD, jak i OpenBSD mają dodatkowe API "bus_space", które zostały połączone z wersją busdma włączoną do FreeBSD. Deweloperzy DragonFly BSD również powoli konwertują swoje sterowniki na busdma.

Bibliografia

Linki zewnętrzne