Kernel User I/O разработка приложений

Я читал по следующим ссылкам о пользовательском вводе / выводе: http://www.hep.by/gnu/kernel/uio-howto/

и следовал за http://nairobi-embedded.org/uio_example.html.

Я использую устройство ivshmem для отображения памяти от хоста к гостю (в QEmu). Драйвер клиента, который я использую, это kernel_module / uio / uio_ivshmem.c от https://www.gitorious.org/nahanni/guest-code.

Я успешно разделил память между несколькими гостями, и я также могу выдавать прерывания от хоста к гостю, используя сервер ivshmem из репозитория git выше.

Но я не могу понять, как я могу "прервать" гостя, чтобы заметить, что запись в память завершена. То есть сигнализировать другому гостю, что он должен прочитать то, что написал первый гость.

Что я делаю неправильно? Есть ли способ отправить прерывание с помощью UIO или я могу только получать? Как еще я должен заметить, что я закончил писать / читать?

1 ответ

Решение

Хорошо, теперь я понял, почему я не могу отправлять прерывания.

Я попытался использовать тестовые приложения, но, как вы можете прочитать в этом ( http://lists.gnu.org/archive/html/qemu-devel/2014-08/msg05388.html) посте, патч в ядре сломался uio_ivshmem.c.

Этот патч сделал ivshmem неспособным отобразить BAR0, который используется для отправки прерываний. BAR2 все еще в порядке и может использоваться для обмена данными, хотя прерывания не будут работать.

Другие вопросы по тегам