X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm.h;h=df221342df8a1f5264a6da029468c6b5c044695d;hb=28b1d0ae6db40cb3e1f5a9b3596b625d2f2af0e4;hp=d81f4b682ad1d6d4616e646b1396d79f74d3b627;hpb=a109eb919a162bd7de58d62020801bc2e633be50;p=palacios.git diff --git a/palacios/include/palacios/vmm.h b/palacios/include/palacios/vmm.h index d81f4b6..df22134 100644 --- a/palacios/include/palacios/vmm.h +++ b/palacios/include/palacios/vmm.h @@ -42,11 +42,11 @@ /* This clearly won't work, we need some way to get a return value out of it */ -#define VMMMalloc(size) \ +#define VMMMalloc(type, var, size) \ do { \ extern struct vmm_os_hooks * os_hooks; \ if ((os_hooks) && (os_hooks)->malloc) { \ - (os_hooks)->malloc(size); \ + var = (type)(os_hooks)->malloc(size); \ } \ } while (0) \ @@ -70,11 +70,6 @@ - - - -/* We need a memory map and an IO device map */ - /* This will contain function pointers that provide OS services */ struct vmm_os_hooks { void (*print_info)(const char * format, ...); @@ -90,22 +85,26 @@ struct vmm_os_hooks { void *(*paddr_to_vaddr)(void *addr); void *(*vaddr_to_paddr)(void *addr); + int (*hook_interrupt)(struct guest_info * info, int irq); + int (*ack_irq)(int irq); + + // Do we need this here? + void (*snprintf)(char * dst, char * format, int len, ...); void (*start_kernel_thread)(); // include pointer to function }; - /* This will contain Function pointers that control the VMs */ struct vmm_ctrl_ops { int (*init_guest)(struct guest_info* info); int (*start_guest)(struct guest_info * info); // int (*stop_vm)(uint_t vm_id); -}; +};