X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvm_guest_mem.h;h=fb98f6970958077bb849b36ec2a70dacae166178;hb=4931bc084ced4bcb172c7bcb197ab55b1c9bdf80;hp=bc1a2886d302f3fafa3e3fdf4d74a919315df781;hpb=f4b074d9bf5c28dfd6e5fd616805ade2e9473b01;p=palacios.git diff --git a/palacios/include/palacios/vm_guest_mem.h b/palacios/include/palacios/vm_guest_mem.h index bc1a288..fb98f69 100644 --- a/palacios/include/palacios/vm_guest_mem.h +++ b/palacios/include/palacios/vm_guest_mem.h @@ -1,5 +1,21 @@ -/* (c) 2008, Jack Lange */ -/* (c) 2008, The V3VEE Project */ +/* + * This file is part of the Palacios Virtual Machine Monitor developed + * by the V3VEE Project with funding from the United States National + * Science Foundation and the Department of Energy. + * + * The V3VEE Project is a joint project between Northwestern University + * and the University of New Mexico. You can find out more at + * http://www.v3vee.org + * + * Copyright (c) 2008, Jack Lange + * Copyright (c) 2008, The V3VEE Project + * All rights reserved. + * + * Author: Jack Lange + * + * This is free software. You are permitted to use, + * redistribute, and modify it as specified in the file "V3VEE_LICENSE". + */ #ifndef __VM_GUEST_MEM_H #define __VM_GUEST_MEM_H @@ -20,15 +36,15 @@ /* Fundamental converters */ // Call out to OS -int host_va_to_host_pa(addr_t host_va, addr_t * host_pa); -int host_pa_to_host_va(addr_t host_pa, addr_t * host_va); +int v3_hva_to_hpa(addr_t host_va, addr_t * host_pa); +int v3_hpa_to_hva(addr_t host_pa, addr_t * host_va); // guest_pa -> (shadow map) -> host_pa -int guest_pa_to_host_pa(struct guest_info * guest_info, addr_t guest_pa, addr_t * host_pa); +int v3_gpa_to_hpa(struct guest_info * guest_info, addr_t guest_pa, addr_t * host_pa); /* !! Currently not implemented !! */ // host_pa -> (shadow_map) -> guest_pa -int host_pa_to_guest_pa(struct guest_info * guest_info, addr_t host_pa, addr_t * guest_pa); +int v3_hpa_to_gpa(struct guest_info * guest_info, addr_t host_pa, addr_t * guest_pa); /**********************************/ @@ -38,18 +54,18 @@ int host_pa_to_guest_pa(struct guest_info * guest_info, addr_t host_pa, addr_t * /* !! Currently not implemented !! */ // host_va -> host_pa -> guest_pa -int host_va_to_guest_pa(struct guest_info * guest_info, addr_t host_va, addr_t * guest_pa); +int v3_hva_to_gpa(struct guest_info * guest_info, addr_t host_va, addr_t * guest_pa); // guest_pa -> host_pa -> host_va -int guest_pa_to_host_va(struct guest_info * guest_info, addr_t guest_pa, addr_t * host_va); +int v3_gpa_to_hva(struct guest_info * guest_info, addr_t guest_pa, addr_t * host_va); // Look up the address in the guests page tables.. This can cause multiple calls that translate // ------------------------------------------------ // | | // --> guest_pa -> host_pa -> host_va -> (read table) --> guest_pa -int guest_va_to_guest_pa(struct guest_info * guest_info, addr_t guest_va, addr_t * guest_pa); +int v3_gva_to_gpa(struct guest_info * guest_info, addr_t guest_va, addr_t * guest_pa); @@ -58,7 +74,7 @@ int guest_va_to_guest_pa(struct guest_info * guest_info, addr_t guest_va, addr_t // ------------------------------------------------ // | | // --> guest_pa -> host_pa -> host_va -> (read table) --> guest_va -int guest_pa_to_guest_va(struct guest_info * guest_info, addr_t guest_pa, addr_t * guest_va); +int v3_gpa_to_gva(struct guest_info * guest_info, addr_t guest_pa, addr_t * guest_va); @@ -66,20 +82,20 @@ int guest_pa_to_guest_va(struct guest_info * guest_info, addr_t guest_pa, addr_t /* GROUP 2 */ /**********************************/ // guest_va -> guest_pa -> host_pa -int guest_va_to_host_pa(struct guest_info * guest_info, addr_t guest_va, addr_t * host_pa); +int v3_gva_to_hpa(struct guest_info * guest_info, addr_t guest_va, addr_t * host_pa); /* !! Currently not implemented !! */ // host_pa -> guest_pa -> guest_va -int host_pa_to_guest_va(struct guest_info * guest_info, addr_t host_pa, addr_t * guest_va); +int v3_hpa_to_gva(struct guest_info * guest_info, addr_t host_pa, addr_t * guest_va); // guest_va -> guest_pa -> host_pa -> host_va -int guest_va_to_host_va(struct guest_info * guest_info, addr_t guest_va, addr_t * host_va); +int v3_gva_to_hva(struct guest_info * guest_info, addr_t guest_va, addr_t * host_va); /* !! Currently not implemented !! */ // host_va -> host_pa -> guest_pa -> guest_va -int host_va_to_guest_va(struct guest_info * guest_info, addr_t host_va, addr_t * guest_va); +int v3_hva_to_gva(struct guest_info * guest_info, addr_t host_va, addr_t * guest_va); @@ -89,10 +105,12 @@ int host_va_to_guest_va(struct guest_info * guest_info, addr_t host_va, addr_t -int read_guest_va_memory(struct guest_info * guest_info, addr_t guest_va, int count, char * dest); -int read_guest_pa_memory(struct guest_info * guest_info, addr_t guest_pa, int count, char * dest); -int write_guest_pa_memory(struct guest_info * guest_info, addr_t guest_pa, int count, char * src); -// TODO int write_guest_va_memory(struct guest_info * guest_info, addr_t guest_va, int count, char * src); +int v3_read_gva_memory(struct guest_info * guest_info, addr_t guest_va, int count, uint8_t * dest); +int v3_read_gpa_memory(struct guest_info * guest_info, addr_t guest_pa, int count, uint8_t * dest); +int v3_write_gpa_memory(struct guest_info * guest_info, addr_t guest_pa, int count, uint8_t * src); +int v3_write_gva_memory(struct guest_info * guest_info, addr_t guest_va, int count, uint8_t * src); +int v3_set_gpa_memory(struct guest_info * guest_info, addr_t guest_pa, int count, uint8_t src); +int v3_set_gva_memory(struct guest_info * guest_info, addr_t guest_va, int count, uint8_t src); #endif // ! __V3VEE__