X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_extensions.h;h=0135f880ae33de4e15e844dbdc21325950657e69;hb=0a4bd37f65c15fe50680e51b68f3f95ec8d347ea;hp=c6a2ae21c88dbfe63c6797097a68073d84602a4f;hpb=adee0fafaa51f4bf28abe7461006be9b9d3dbceb;p=palacios-OLD.git diff --git a/palacios/include/palacios/vmm_extensions.h b/palacios/include/palacios/vmm_extensions.h index c6a2ae2..0135f88 100644 --- a/palacios/include/palacios/vmm_extensions.h +++ b/palacios/include/palacios/vmm_extensions.h @@ -24,23 +24,36 @@ #include #include -#include +#include + + +struct v3_vm_info; +struct guest_info; + +struct v3_extensions { + struct list_head extensions; + struct list_head on_exits; + struct list_head on_entries; +}; + struct v3_extension_impl { char * name; - int (*init)(struct v3_vm_info * vm, v3_cfg_tree_t * cfg); + 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); int (*core_deinit)(struct guest_info * core); + int (*on_entry)(struct guest_info * core); + int (*on_exit)(struct guest_info * core); }; - - struct v3_extension { struct v3_extension_impl * impl; void * priv_data; struct list_head node; + struct list_head exit_node; + struct list_head entry_node; }; @@ -49,6 +62,9 @@ int V3_init_extensions(); int V3_deinit_extensions(); +int v3_init_ext_manager(struct v3_vm_info * vm); +int v3_add_extension(struct v3_vm_info * vm, const char * name, v3_cfg_tree_t * cfg); + #define register_extension(ext) \ static struct v3_extension_impl * _v3_ext \