直接上代码
int kvm_get_host_virtual_addr(uint64_t paddr,
uint64_t *vaddr)
{
int slot_num = ARRAY_SIZE(kvm_state->slots);
int i;
for (i = 0; i < slot_num; i++) {
KVMSlot *mem = &kvm_state->slots[i];
if (paddr >= mem->start_addr &&
paddr < mem->start_addr + mem->memory_size) {
*vaddr = (uint64_t)mem->ram + paddr - mem->start_addr;
break;
}
}
if (i == slot_num) {
fprintf(stderr, "fail to find target physical addr(%ld) in KVM memory range",
paddr);
return 1;
}
return 0;
}