LINUX.ORG.RU

[qemu] генерация асинхронного прерывания

 


0

1

Пишется эмулятор устройства, которое получает данные откуда-то из внешнего мира (но при этом не является сетевой картой). Приход данных не привязан ни к каким событиям в эмулируемой машине и сопровождается прерыванием. Как правильно программировать такие вещи в рамках qemu? Мне пока что не приходит в голову ничего лучше, чем создать отдельную нить, котоая будет слушать какой-то управляющий сокет и вызывать qemu_set_irq.

★★★★★
Ответ на: комментарий от elrprt

> нашлось решение?

Пока я склоняюсь к тому, чтобы в процедуре инициализации устройства открывать FIFO и передавать полученный дескриптор в qemu_set_fd_handler, и потом в обработчике готовности дескриптора вызывать специфичную для устройства процедуру реакции на поступившие данные (что-то вроде NetClientInfo::receive). Фактически нужно будет сделать свой простенький класс устройств PipeDevice.

Насколько это кошерно - не знаю :)

tailgunner ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.