X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_extensions.h;h=a7c17186b974d9249373827deaf1d9c27673a49f;hb=c900a49cfd8ff982a35bb7385fbd927e961569a0;hp=fdddb6939230ce31e25be4b2e958f667330c6665;hpb=b94be6799fca5da67eb64f5e7467c2da5dff5022;p=palacios.git diff --git a/palacios/include/palacios/vmm_extensions.h b/palacios/include/palacios/vmm_extensions.h index fdddb69..a7c1718 100644 --- a/palacios/include/palacios/vmm_extensions.h +++ b/palacios/include/palacios/vmm_extensions.h @@ -41,8 +41,8 @@ struct v3_extension_impl { char * name; int (*init)(struct v3_vm_info * vm, v3_cfg_tree_t * cfg, void ** priv_data); int (*deinit)(struct v3_vm_info * vm, void * priv_data); - int (*core_init)(struct guest_info * core, void * priv_data); - int (*core_deinit)(struct guest_info * core, void * priv_data); + int (*core_init)(struct guest_info * core, void * priv_data, void ** core_data); + int (*core_deinit)(struct guest_info * core, void * priv_data, void * core_data); int (*on_entry)(struct guest_info * core, void * priv_data); int (*on_exit)(struct guest_info * core, void * priv_data); }; @@ -54,6 +54,9 @@ struct v3_extension { struct list_head node; struct list_head exit_node; struct list_head entry_node; + + // KCH: has to be last entry in this struct + void * core_ext_priv_data[0]; }; @@ -63,10 +66,13 @@ int V3_deinit_extensions(); int v3_init_ext_manager(struct v3_vm_info * vm); +int v3_deinit_ext_manager(struct v3_vm_info * vm); int v3_add_extension(struct v3_vm_info * vm, const char * name, v3_cfg_tree_t * cfg); int v3_init_core_extensions(struct guest_info * core); +int v3_deinit_core_extensions(struct guest_info * core); void * v3_get_extension_state(struct v3_vm_info * vm, const char * name); +void * v3_get_ext_core_state (struct guest_info * core, const char * name); #define register_extension(ext) \