X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvm_guest_mem.h;h=fb98f6970958077bb849b36ec2a70dacae166178;hb=31281ec866f7244baf965402aebc8e26046b43e0;hp=41961ba808cd2903b063534059b42b3e7dae451c;hpb=f9bb3db89469169bb5775dc031d89e570c6fed70;p=palacios.git diff --git a/palacios/include/palacios/vm_guest_mem.h b/palacios/include/palacios/vm_guest_mem.h index 41961ba..fb98f69 100644 --- a/palacios/include/palacios/vm_guest_mem.h +++ b/palacios/include/palacios/vm_guest_mem.h @@ -1,9 +1,28 @@ -/* Northwestern University */ -/* (c) 2008, Jack Lange */ +/* + * 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 + +#ifdef __V3VEE__ + #include #include @@ -17,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); /**********************************/ @@ -35,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); @@ -55,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); @@ -63,21 +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); @@ -86,13 +104,16 @@ 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__ #endif