#include <palacios/vmm_io.h>
#include <palacios/vmm_msr.h>
#include <palacios/vmm_mptable.h>
-
+#include <palacios/vmm_sprintf.h>
return NULL;
}
-
V3_Print("File index=%d id=%s\n", idx, id);
strncpy(file->tag, id, 256);
return alignment;
}
-static int pre_config_vm(struct v3_vm_info * vm, v3_cfg_tree_t * vm_cfg) {
+static int pre_config_vm(struct v3_vm_info * vm, v3_cfg_tree_t * vm_cfg) {
char * memory_str = v3_cfg_val(vm_cfg, "memory");
char * schedule_hz_str = v3_cfg_val(vm_cfg, "schedule_hz");
char * vm_class = v3_cfg_val(vm_cfg, "class");
char * align_str = v3_cfg_val(v3_cfg_subtree(vm_cfg, "memory"), "alignment");
uint32_t sched_hz = 100; // set the schedule frequency to 100 HZ
-
+
+
if (!memory_str) {
PrintError("Memory is a required configuration parameter\n");
return -1;
return 0;
}
-static int determine_paging_mode(struct guest_info *info, v3_cfg_tree_t * core_cfg)
-{
+
+static int determine_paging_mode(struct guest_info * info, v3_cfg_tree_t * core_cfg) {
extern v3_cpu_arch_t v3_cpu_types[];
v3_cfg_tree_t * vm_tree = info->vm_info->cfg_data->cfg;
-struct v3_vm_info * v3_config_guest(void * cfg_blob) {
- v3_cpu_arch_t cpu_type = v3_get_cpu_type(v3_get_cpu_id());
+struct v3_vm_info * v3_config_guest(void * cfg_blob, void * priv_data) {
+ v3_cpu_arch_t cpu_type = v3_get_cpu_type(V3_Get_CPU());
struct v3_config * cfg_data = NULL;
struct v3_vm_info * vm = NULL;
int num_cores = 0;
return NULL;
}
+ vm->host_priv_data = priv_data;
+
vm->cfg_data = cfg_data;
V3_Print("Preconfiguration\n");
+int v3_free_config(struct v3_vm_info * vm) {
+
+ v3_free_htable(vm->cfg_data->file_table, 1, 0);
+
+ v3_xml_free(vm->cfg_data->cfg);
+
+ V3_Free(vm->cfg_data);
+ return 0;
+}
+
static int setup_memory_map(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) {