Могу ли я получить входные данные, непосредственно читая IOport USB-клавиатуры - PullRequest
0 голосов
/ 25 мая 2011

Я работаю на платформе Xen, теперь я хочу перехватить прерывание в домене HVM, чтобы прочитать необработанные данные (код сканирования) клавиатуры.

Одна идея состоит в том, что гипервизор следует по пути UHCIсписок кадров -> TD, связанный с клавиатурным устройством -> буфер данных, чтобы получить необработанные данные.Однако когда генерируется прерванное, TD был удален из списка TD.Таким образом, гипервизор не может найти буфер данных и не может читать необработанные данные.

Другая идея заключается в том, что непосредственно читается IOport клавиатуры.

Я знаю, что возможнополучить ввод с клавиатуры PS2, читая IOport 0x60 и 0x64. Но моим текущим рабочим устройством является клавиатура USB.

Теперь мой вопрос заключается в том, можно ли получить необработанные входные данные с клавиатуры USB, непосредственно считавIOports.

Если можете, как этого добиться, приведите простой пример.

или есть другой способ чтения исходных данных ввода?

1 Ответ

0 голосов
/ 08 июня 2011

Похоже, что нет экспортированного порта (например, USB-клавиатуры) для гостя, чтобы прочитать такую ​​информацию.

но я обнаружил, что контроллер UHCI не удаляет TD автоматически из списка, даже если контроллер успешно завершил передачу данных. Операция удаления выполняется в функции uhci-irq

Таким образом, мы можем прочитать буфер данных до вызова функции uhci-irq.

...