Опыт показывает, что можно написать хорошие и стабильные драйверы пользовательского пространства практически для любого адаптера PCI.Это просто требует некоторой сложности и небольшого уровня прокси в ядре.UIO - это шаг в этом направлении, но если вы хотите правильно обрабатывать прерывания в пользовательском пространстве, тогда UIO может быть недостаточно, например, если устройство не поддерживает бит отключения прерываний PCI-spec, на который полагается UIO.
Обратите внимание, что задержки при пробуждении процесса составляют несколько микросекунд, поэтому, если ваша реализация требует очень низкой задержки, пользовательское пространство может быть затруднительным.
Если бы я должен был реализовать драйвер пользовательского пространства, яуменьшит ISR ядра до операции «disable & ack & wakeup-userpace», обработает прерывание внутри процесса пробуждения, а затем снова включит прерывание (конечно, записав в сопоставленную память PCI процесс пользователя)).