// Parse host-os defined options into an easily-accessed format.
v3_parse_options(options);
+#ifdef V3_CONFIG_HVM
+ v3_init_hvm();
+#endif
+
// Memory manager initialization
v3_init_mem();
v3_deinit_mem();
+#ifdef V3_CONFIG_HVM
+ v3_deinit_hvm();
+#endif
+
v3_deinit_options();
return 0;
}
-struct v3_vm_info * v3_create_vm(void * cfg, void * priv_data, char * name) {
+struct v3_vm_info * v3_create_vm(void * cfg, void * priv_data, char * name, unsigned int cpu_mask) {
struct v3_vm_info * vm = v3_config_guest(cfg, priv_data);
int vcore_id = 0;
PrintError(vm, VCORE_NONE,"Error registering VM with scheduler\n");
}
- for (vcore_id = 0; vcore_id < vm->num_cores; vcore_id++) {
+ if (v3_cpu_mapper_admit_vm(vm,cpu_mask) != 0){
+ PrintError(vm, VCORE_NONE,"Error admitting VM %s for mapping", vm->name);
+ }
+
+ for (vcore_id = 0; vcore_id < vm->num_cores; vcore_id++) {
struct guest_info * core = &(vm->cores[vcore_id]);
}
vm->avail_cores = avail_cores;
-
- if (v3_cpu_mapper_admit_vm(vm,cpu_mask) != 0){
- PrintError(vm, VCORE_NONE,"Error admitting VM %s for mapping", vm->name);
- }
if (v3_scheduler_admit_vm(vm) != 0){
PrintError(vm, VCORE_NONE,"Error admitting VM %s for scheduling", vm->name);
case VM_INVALID: base->state = V3_VM_INVALID; break;
case VM_RUNNING: base->state = V3_VM_RUNNING; break;
case VM_STOPPED: base->state = V3_VM_STOPPED; break;
+ case VM_RESETTING: base->state = V3_VM_RESETTING; break;
case VM_PAUSED: base->state = V3_VM_PAUSED; break;
case VM_ERROR: base->state = V3_VM_ERROR; break;
case VM_SIMULATING: base->state = V3_VM_SIMULATING; break;
core->num_vcores=numcores;
- for (i=0;i<vm->mem_map.num_base_regions;i++) {
+ for (i=0;i<numregions;i++) {
mem->region[i].host_paddr = (void*)(vm->mem_map.base_regions[i].host_addr);
mem->region[i].size = v3_mem_block_size;
#ifdef V3_CONFIG_SWAPPING