X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_host_events.c;h=28543f79a740f274c84e3d51a23b5958499f956a;hb=9a32111c4074aafd55cd9590a24bd5c751a6fe61;hp=bbacce5113d8f1e5cb18921bf243383af14e4d0f;hpb=7ee094e43dab15b0139847bca24cef904f8a42f6;p=palacios.git diff --git a/palacios/src/palacios/vmm_host_events.c b/palacios/src/palacios/vmm_host_events.c index bbacce5..28543f7 100644 --- a/palacios/src/palacios/vmm_host_events.c +++ b/palacios/src/palacios/vmm_host_events.c @@ -20,7 +20,6 @@ #include #include #include -#include int v3_init_host_events(struct v3_vm_info * vm) { struct v3_host_events * host_evts = &(vm->host_event_hooks); @@ -34,6 +33,42 @@ int v3_init_host_events(struct v3_vm_info * vm) { return 0; } +int v3_deinit_host_events(struct v3_vm_info * vm) { + struct v3_host_events * host_evts = &(vm->host_event_hooks); + struct v3_host_event_hook * hook = NULL; + struct v3_host_event_hook * tmp = NULL; + + list_for_each_entry_safe(hook, tmp, &(host_evts->keyboard_events), link) { + list_del(&(hook->link)); + V3_Free(hook); + } + + list_for_each_entry_safe(hook, tmp, &(host_evts->mouse_events), link) { + list_del(&(hook->link)); + V3_Free(hook); + } + + + list_for_each_entry_safe(hook, tmp, &(host_evts->timer_events), link) { + list_del(&(hook->link)); + V3_Free(hook); + } + + + list_for_each_entry_safe(hook, tmp, &(host_evts->serial_events), link) { + list_del(&(hook->link)); + V3_Free(hook); + } + + + list_for_each_entry_safe(hook, tmp, &(host_evts->console_events), link) { + list_del(&(hook->link)); + V3_Free(hook); + } + + return 0; +} + int v3_hook_host_event(struct v3_vm_info * vm, v3_host_evt_type_t event_type, @@ -79,9 +114,6 @@ int v3_deliver_keyboard_event(struct v3_vm_info * vm, struct v3_host_events * host_evts = NULL; struct v3_host_event_hook * hook = NULL; - if (vm == NULL) { - vm = v3_get_foreground_vm(); - } host_evts = &(vm->host_event_hooks); @@ -104,9 +136,6 @@ int v3_deliver_mouse_event(struct v3_vm_info * vm, struct v3_host_events * host_evts = NULL; struct v3_host_event_hook * hook = NULL; - if (vm == NULL) { - vm = v3_get_foreground_vm(); - } host_evts = &(vm->host_event_hooks); @@ -129,9 +158,6 @@ int v3_deliver_timer_event(struct v3_vm_info * vm, struct v3_host_events * host_evts = NULL; struct v3_host_event_hook * hook = NULL; - if (vm == NULL) { - vm = v3_get_foreground_vm(); - } host_evts = &(vm->host_event_hooks); @@ -153,9 +179,6 @@ int v3_deliver_serial_event(struct v3_vm_info * vm, struct v3_host_events * host_evts = NULL; struct v3_host_event_hook * hook = NULL; - if (vm == NULL) { - vm = v3_get_foreground_vm(); - } host_evts = &(vm->host_event_hooks); @@ -179,9 +202,6 @@ int v3_deliver_console_event(struct v3_vm_info * vm, struct v3_host_events * host_evts = NULL; struct v3_host_event_hook * hook = NULL; - if (vm == NULL) { - vm = v3_get_foreground_vm(); - } host_evts = &(vm->host_event_hooks);