бусдма


В вычислительной технике busdma , bus_dma и bus_space представляют собой набор интерфейсов прикладного программирования, призванных помочь сделать драйверы устройств менее зависимыми от кода, специфичного для платформы, тем самым упрощая перенос операционной системы хоста на новое компьютерное оборудование. [1] [2] Это достигается за счет наличия абстракций для сопоставления прямого доступа к памяти (DMA) между популярными машинно-независимыми компьютерными шинами , такими как PCI , которые используются в различных архитектурах от IA-32 (NetBSD/i386) доАльфа-версия DEC (NetBSD/альфа). [1] Кроме того, некоторые устройства могут поставляться в нескольких вариантах, поддерживающих более одной шины, например, ISA , EISA , локальную шину VESA и PCI , по-прежнему использующих одну и ту же базовую логику независимо от шины, и такие драйверы устройств также выиграют от этого. такая же абстракция. [1] :  §1.2 Таким образом, основная цель busdma — облегчить максимальное повторное использование кода на самых разных платформах . [1] :  §5

Примерно в 2006 году абстракции шины и DMA позволили NetBSD поддерживать 50 аппаратных платформ и 14 архитектур ЦП из одного исходного дерева по сравнению с моделью разветвления , используемой портами Linux . [2]

Первоначально реализованный как API «bus_dma» разработчиками операционной системы NetBSD , [1] [3] busdma был принят OpenBSD , FreeBSD и их производными; с FreeBSD, включающей его под зонтиком busdma (без подчеркивания). Как NetBSD, так и OpenBSD имеют дополнительные API-интерфейсы bus_space [4] , которые были объединены в версию busdma, встроенную в FreeBSD. Разработчики DragonFly BSD также постепенно конвертируют свои драйверы для использования busdma.