Описание тега greyhound
Вариант 1 (прямой доступ через файл /sys/.../resource0)
Хорошо для тестирования и ничего плохого с ним функционально, хотя и не может ничего дополнительно и не драйвера слоя абстрагирования. Я нахожу этот метод бяка кстати программа взаимодействия пользователя с файловой системы, но это может быть мое личное мнение.
Вариант 2 (с использованием uio_pci_generic)
Я не знаю, что uio_pci_generic делает, но это, кажется, добавить немного функциональных возможностей, позволяя программе пользователю доступ к PCI наследие прерывания. Что плохо, потому что MSI является предпочтительным, так или иначе.
Вариант 3 (пользовательских уио водителя)
Я не пробовал это, но я подозреваю, что это немного пустая трата времени по сравнению с вариантом 4
Вариант 4 (собственное ядро драйвера)
Это действительно лучшее решение и только так правильно делать. Вам нужен водитель, чтобы иметь возможность обрабатывать такие вещи, как ДМА и MSI должным образом и быть в состоянии обеспечить любое количество абстракции через символьное устройство. Однако есть достаточно документов о том, как писать драйверы для PCI карты онлайн и ядра обеспечивает большую поддержку для управления вещи.