2016-03-31 16 views
1

Ist es möglich, Xen Hypercalls in einem C-Programm (wie Kernel Syscalls) oder in einer Befehlszeile zu verwenden? Ich muss einige Befehle von userspce direkt an Xen-Hypervisor ausstellen, für die ich dachte, dass es vielleicht hilfreich sein kann. Aber ist es tatsächlich möglich? wenn ja, wie? Danke und Grüße.Verwenden von Xen-Hypercalls in einem C-Programm oder einer Befehlszeile

Antwort

1

Ein Hypercall ist für einen Syscall, was ein Hypervisor für ein Betriebssystem ist. Alternativ ist ein Hypercall für einen Hypervisor, was ein Syscall für einen Kernel ist. Ein Hypercall ist eine Software-Trap von einer Domäne zum Hypervisor, genau wie ein Syscall eine Software-Trap von einer Anwendung zum Kernel ist. Domains verwenden Hypercalls, um privilegierte Vorgänge wie das Aktualisieren von Seitentabellen anzufordern. Wie bei einem Syscall ist der Hypercall synchron, aber der Rückpfad vom Hypervisor zur Domäne verwendet Ereigniskanäle. Ein Ereigniskanal ist eine Warteschlange von asynchronen Benachrichtigungen und benachrichtigt die gleichen Arten von Ereignissen, die die Benachrichtigung auf systemeigener Hardware unterbrechen. Wenn eine Domäne mit ausstehenden Ereignissen in der Warteschlange geplant ist, wird der Event-Callback-Handler des Betriebssystems aufgerufen, um die entsprechenden Maßnahmen zu ergreifen.

Siehe xen/include/public/xen.h in den Xen Quellen und die Xen Documentation - Hypercall Interfaces

+1

Danke viel Valeriy. Ich hatte sie vorher gelesen. Als Antwort auf meine Frage scheint es hilfreich, wenn ich ja sage, es ist möglich. Ich habe einen Hypercall erstellt und kann nun einen Hypercall aus einem C-Programm aufrufen. Grüße. – sami