Я разрабатываю драйвер Linux DMA. Приложение пользовательского пространства хочет, чтобы драйвер выполнял асинхронную операцию (передачу данных) и получал информацию только после завершения операции. Как приложение пользовательского пространства получает информацию асинхронно?
Я знаю, что в пространстве ядра можно установить обработчик прерывания для обработки прерывания завершения. Мой вопрос касается пользовательского пространства, потому что мои данные должны обрабатываться в пользовательском пространстве. Что я могу придумать, так это создать поток в пользовательском пространстве и дождаться, пока драйвер выполнит задачу. Есть ли лучший способ справиться с этим? или я думаю в неправильном направлении?
В более общем смысле, как обрабатывать прерывания для Linux в пользовательском пространстве?