X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_telemetry.c;h=988090fc3f303c1646afbe1581d2208a3ab8b658;hb=a48fed88738b625fea8a606f5b327d32db91f009;hp=0195cfed75c68dc89fb3aa2fc4fae2b30678a8d2;hpb=ead1cdbf64d8f8ae39a52abd3c9fedd17ae0408d;p=palacios.git diff --git a/palacios/src/palacios/vmm_telemetry.c b/palacios/src/palacios/vmm_telemetry.c index 0195cfe..988090f 100644 --- a/palacios/src/palacios/vmm_telemetry.c +++ b/palacios/src/palacios/vmm_telemetry.c @@ -162,6 +162,11 @@ static struct exit_event * get_exit(struct guest_info * info, uint_t exit_code) static inline struct exit_event * create_exit(uint_t exit_code) { struct exit_event * evt = V3_Malloc(sizeof(struct exit_event)); + if (!evt) { + PrintError(VM_NONE, VCORE_NONE, "Cannot allocate in createing exit in telemetry\n"); + return NULL; + } + evt->exit_code = exit_code; evt->cnt = 0; evt->handler_time = 0; @@ -219,6 +224,11 @@ void v3_add_telemetry_cb(struct v3_vm_info * vm, struct v3_telemetry_state * telemetry = &(vm->telemetry); struct telemetry_cb * cb = (struct telemetry_cb *)V3_Malloc(sizeof(struct telemetry_cb)); + if (!cb) { + PrintError(vm, VCORE_NONE, "Cannot allocate in adding a telemtry callback\n"); + return ; + } + cb->private_data = private_data; cb->telemetry_fn = telemetry_fn; @@ -246,13 +256,13 @@ static void print_telemetry_start(struct v3_vm_info *vm, char *hdr_buf) struct v3_telemetry_state * telemetry = &(vm->telemetry); uint64_t invoke_tsc = 0; rdtscll(invoke_tsc); - V3_Print("%stelemetry window tsc cnt: %u\n", hdr_buf, (uint32_t)(invoke_tsc - telemetry->prev_tsc)); + V3_Print(vm, VCORE_NONE, "%stelemetry window tsc cnt: %u\n", hdr_buf, (uint32_t)(invoke_tsc - telemetry->prev_tsc)); telemetry->prev_tsc = invoke_tsc; } static void print_telemetry_end(struct v3_vm_info *vm, char *hdr_buf) { - V3_Print("%s Telemetry done\n", hdr_buf); + V3_Print(vm, VCORE_NONE, "%s Telemetry done\n", hdr_buf); } static void print_core_telemetry(struct guest_info * core, char *hdr_buf) @@ -260,10 +270,10 @@ static void print_core_telemetry(struct guest_info * core, char *hdr_buf) struct exit_event * evt = NULL; struct rb_node * node = v3_rb_first(&(core->core_telem.exit_root)); - V3_Print("Exit information for Core %d\n", core->vcpu_id); + V3_Print(core->vm_info, core, "Exit information for Core %d\n", core->vcpu_id); if (!node) { - V3_Print("No information yet for this core\n"); + V3_Print(core->vm_info, core, "No information yet for this core\n"); return; } @@ -289,7 +299,7 @@ static void print_core_telemetry(struct guest_info * core, char *hdr_buf) continue; } - V3_Print("%s%s:%sCnt=%u,%sAvg. Time=%u\n", + V3_Print(core->vm_info, core, "%s%s:%sCnt=%u,%sAvg. Time=%u\n", hdr_buf, code_str, (strlen(code_str) > 13) ? "\t" : "\t\t", evt->cnt,