2016-09-06 6 views
0

Мне нужно запустить кусок кода в VMX-non корневой режим, используя KVM API. Это можно легко сделать, используя KVM API из пользовательской космической программы. Но я должен сделать это из самого пространства ядра. Отправка необходимых данных в пространство пользователя и запуск пользовательской космической программы не является вариантом.Как использовать API-интерфейс KVM (базовая виртуальная машина ядра) из пространства ядра?

This сообщения упоминает способ выпустить IOCTL вызовов из пространства ядра, а так как KVM использует API IOCTL вызывает взаимодействие с модулем KVM ядра, это кажется правдоподобным подходом. Однако я не мог понять этот подход и не уверен, что он будет работать без ошибок.

Предоставляет ли KVM API, который может запускаться из самого пространства ядра? Если нет, как я могу создать программу пользовательского пространства, которая получает требуемые данные из пространства ядра (множество структур данных), а затем делает то же самое?

ответ

0

Существует уже Qemu, который представляет собой программу пользовательского пространства, которая взаимодействует с KVM через ioctls. Все, что вам нужно, поддерживается Qemu.

Вы можете просто расширить Qemu, чтобы легко реализовать ваше приложение KVM в качестве команды Qemu.

Посмотрите файл hmp-commands.hx в корневой каталог Qemu для примеров.