X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_cpu_mapper.c;h=88256dd435b6aa060c4fbd5545a192f7eeb97e22;hb=210c49c1f9b523ff94fd5b6791961d242d5bbae4;hp=f3cb4cadaacb59ad7d243a6c4195a5ff0353734a;hpb=e94507c7055f81abcf6a95132cb7ad90f1b5e6ca;p=palacios.git diff --git a/palacios/src/palacios/vmm_cpu_mapper.c b/palacios/src/palacios/vmm_cpu_mapper.c index f3cb4ca..88256dd 100644 --- a/palacios/src/palacios/vmm_cpu_mapper.c +++ b/palacios/src/palacios/vmm_cpu_mapper.c @@ -60,7 +60,10 @@ int V3_init_cpu_mapper() { int V3_deinit_cpu_mapper() { destroy_default_cpu_mapper(); - v3_free_htable(master_cpu_mapper_table, 1, 1); + // we must leave the keys and values unfreed + // since we have no idea whether they are heap or otherwise + // the user must have done appropriate unregisters before this + v3_free_htable(master_cpu_mapper_table, 0, 0); return 0; } @@ -140,17 +143,17 @@ int V3_disable_cpu_mapper() } } -int v3_cpu_mapper_register_vm(struct v3_vm_info *vm,unsigned int cpu_mask) { +int v3_cpu_mapper_register_vm(struct v3_vm_info *vm) { if (cpu_mapper->vm_init) { - return cpu_mapper->vm_init(vm,cpu_mask); + return cpu_mapper->vm_init(vm); } else { return 0; } } -int v3_cpu_mapper_admit_vm(struct v3_vm_info *vm) { +int v3_cpu_mapper_admit_vm(struct v3_vm_info *vm, unsigned int cpu_mask) { if (cpu_mapper->admit) { - return cpu_mapper->admit(vm); + return cpu_mapper->admit(vm,cpu_mask); } else { return 0; } @@ -165,12 +168,16 @@ int v3_cpu_mapper_admit_core(struct v3_vm_info * vm, int vcore_id, int target_cp } } +int default_mapper_vm_init(struct v3_vm_info *vm){ + return 0; +} +int default_mapper_admit_core(struct v3_vm_info * vm, int vcore_id, int target_cpu){ + return 0; +} -int default_mapper_vm_init(struct v3_vm_info *vm, unsigned int cpu_mask) -{ - PrintDebug(vm, VCORE_NONE,"mapper. default_mapper_init\n"); +int default_mapper_admit(struct v3_vm_info *vm, unsigned int cpu_mask){ uint32_t i; int vcore_id = 0; @@ -187,6 +194,7 @@ int default_mapper_vm_init(struct v3_vm_info *vm, unsigned int cpu_mask) if (specified_cpu != NULL) { core_idx = atoi(specified_cpu); + // unsigned comparison with 0 if (core_idx < 0) { PrintError(vm, VCORE_NONE, "Target CPU out of bounds (%d) \n", core_idx); } @@ -213,25 +221,15 @@ int default_mapper_vm_init(struct v3_vm_info *vm, unsigned int cpu_mask) } - core->pcpu_id = core_idx; - vcore_id--; - } - - if (vcore_id >= 0) { - v3_stop_vm(vm); - return -1; + core->pcpu_id = core_idx; + vcore_id--; } - return 0; - -} - -int default_mapper_admit_core(struct v3_vm_info * vm, int vcore_id, int target_cpu){ - return 0; -} - + // if (vcore_id >= 0) { // dead code... + //v3_stop_vm(vm); + //return -1; + //} -int default_mapper_admit(struct v3_vm_info *vm){ return 0; } @@ -256,5 +254,6 @@ static int create_default_cpu_mapper() static int destroy_default_cpu_mapper() { v3_unregister_cpu_mapper(default_mapper_impl.name); + // note - is not deleted since it's a global... return 0; }