Я полагаю, что вы можете писать с помощью DMA с помощью операций ввода-вывода, к которым вы можете обращаться через библиотеку GNU C. Вы должны использовать системные вызовы, такие как ioperm или iopl, и запускать от имени пользователя root, чтобы получить доступ к регистрам DMA. По крайней мере, так можно получить доступ к пространству ввода-вывода, которое можно использовать для доступа DMA. Хотя я не могу полностью ответить на вопрос, надеюсь, это укажет вам правильное направление.