X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_cpuid.c;h=a093bf75301922484002d281ebc072a020045d15;hb=adee0fafaa51f4bf28abe7461006be9b9d3dbceb;hp=232531c017f73357ca06dd4ed000cdf5d28ae530;hpb=3e5e5a12e64630d7a37ed32b8d7e2d993c79f7e0;p=palacios.git diff --git a/palacios/src/palacios/vmm_cpuid.c b/palacios/src/palacios/vmm_cpuid.c index 232531c..a093bf7 100644 --- a/palacios/src/palacios/vmm_cpuid.c +++ b/palacios/src/palacios/vmm_cpuid.c @@ -27,6 +27,25 @@ void v3_init_cpuid_map(struct v3_vm_info * vm) { vm->cpuid_map.map.rb_node = NULL; } +int v3_deinit_cpuid_map(struct v3_vm_info * vm) { + struct rb_node * node = v3_rb_first(&(vm->cpuid_map.map)); + struct v3_cpuid_hook * hook = NULL; + struct rb_node * tmp_node = NULL; + + + while (node) { + hook = rb_entry(node, struct v3_cpuid_hook, tree_node); + tmp_node = node; + node = v3_rb_next(node); + + v3_rb_erase(&(hook->tree_node), &(vm->cpuid_map.map)); + V3_Free(hook); + + } + + return 0; +} + static inline struct v3_cpuid_hook * __insert_cpuid_hook(struct v3_vm_info * vm, struct v3_cpuid_hook * hook) { struct rb_node ** p = &(vm->cpuid_map.map.rb_node);