2015-11-08 3 views
0

Я очень новичок в виртуализации, и в последнее время я пытался познакомиться с тем, как работают VMM и как создаются гиперкары.Внедрение пользовательской гиперссылки в kvm

Говоря о том, что я планирую реализовать новую гиперкальку в KVM, которая установлена ​​на моем рабочем столе Ubuntu, и, в свою очередь, может быть вызвана из гостевой среды. С этой гиперкачкой я планирую просто вернуть строку с надписью «Hello World», , На данный момент я не знаю, как это произошло. Было бы очень полезно, если бы вы могли мне посоветовать мне, как я могу реализовать такую ​​гиперкальку. Спасибо!

ответ

2

Вы можете использовать команду vmcall в пользовательской программе, чтобы сделать гиперкальку в KVM. Вам нужно написать обработчик для этого VMCALL в kvm. Если вы запустите код в гостевой системе;

#define VMCALL_ID 100 
do_vmcall() 
{ 
    asm volatile ("vmcall" : "eax"(VMCALL_ID)); 
} 

это приведет к ловушке в KVM. Kvm вызовет функцию handle_vmcall. В функции handle_vmcall вам нужно написать обработчик, соответствующий этому.

int handle_vmcall(struct kvm_vcpu *vcpu) 
{ 
    unsigned eax = kvm_read_register(vcpu, VCPU_REGS_RAX); 

    switch (eax) { 
     case VMCALL_ID: 
      BLAH; break; 
     default: BLAH; BLAH; 
    } 
    return 0; 
} 
Смежные вопросы