/* per-core state */
struct guest_info {
+ char exec_name[256];
+
uint64_t rip;
uint_t cpl;
struct v3_vm_info * vm_info;
+ v3_core_operating_mode_t core_run_state;
+
/* the logical cpu on which this core runs */
uint32_t cpu_id;
};
/* shared state across cores */
struct v3_vm_info {
+ char name[128];
+
v3_vm_class_t vm_class;
addr_t mem_size; /* In bytes for now */
uint64_t yield_cycle_period;
+
+ void * host_priv_data;
+
int num_cores;
- struct guest_info cores[0];
+ // JRL: This MUST be the last entry...
+ struct guest_info cores[0];
};
int v3_init_vm(struct v3_vm_info * vm);
int v3_init_core(struct guest_info * core);
+int v3_free_vm_internal(struct v3_vm_info * vm);
+int v3_free_core(struct guest_info * core);
+
uint_t v3_get_addr_width(struct guest_info * info);
v3_cpu_mode_t v3_get_vm_cpu_mode(struct guest_info * info);