X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_mem.c;h=39939a108015152231be914138029ebed4aef762;hp=cf18c104b496140b562bce70e732abe9643ff321;hb=2b1f4ef19d766727f873476861c64339c8836a40;hpb=ba112e34a1151ff27c2161c1b7b85fe52392e42d diff --git a/palacios/src/palacios/vmm_mem.c b/palacios/src/palacios/vmm_mem.c index cf18c10..39939a1 100644 --- a/palacios/src/palacios/vmm_mem.c +++ b/palacios/src/palacios/vmm_mem.c @@ -49,10 +49,10 @@ void free_shadow_map(struct shadow_map * map) { while(cursor) { tmp = cursor; cursor = cursor->next; - VMMFree(tmp); + V3_Free(tmp); } - VMMFree(map); + V3_Free(map); } @@ -155,6 +155,26 @@ shadow_region_t * get_shadow_region_by_addr(struct shadow_map * map, } +host_region_type_t get_shadow_addr_type(struct guest_info * info, addr_t guest_addr) { + shadow_region_t * reg = get_shadow_region_by_addr(&(info->mem_map), guest_addr); + + if (!reg) { + return HOST_REGION_INVALID; + } else { + return reg->host_type; + } +} + +addr_t get_shadow_addr(struct guest_info * info, addr_t guest_addr) { + shadow_region_t * reg = get_shadow_region_by_addr(&(info->mem_map), guest_addr); + + if (!reg) { + return 0; + } else { + return (guest_addr - reg->guest_start) + reg->host_addr.phys_addr.host_start; + } +} + host_region_type_t lookup_shadow_map_addr(struct shadow_map * map, addr_t guest_addr, addr_t * host_addr) { shadow_region_t * reg = get_shadow_region_by_addr(map, guest_addr);