Linux Zero Copy
У меня есть устройство PCI, которое нужно читать и писать из пространства пользователя. Я пытаюсь использовать нулевую копию; Есть ли способ распределить, закрепить и получить физический адрес адреса пользовательского пространства полностью внутри пользовательского пространства, или мне нужен модуль ядра, который, скажем, вызывает virt_to_phys или get_user_pages? Память устройства отображается в пользовательской памяти через MMIO, поэтому я могу передать ей любые необходимые данные. Благодарю.
2 ответа
Это был полный взлом, но я ограничил Linux диапазоном памяти и использовал MMIO для выделения памяти для моего устройства, о котором ядро не подозревало.
По сути, вам нужна память для поддержки DMA, и, насколько я знаю, это может сделать только модуль ядра. См. http://lxr.free-electrons.com/source/Documentation/PCI/PCI-DMA-mapping.txt