Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Cleanup and fixes based on Coverity pass
[palacios.git] / palacios / src / palacios / vmm_cpu_mapper.c
index f3cb4ca..88256dd 100644 (file)
@@ -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;
 }