X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Finclude%2Fpalacios%2Fvmm_telemetry.h;fp=palacios%2Finclude%2Fpalacios%2Fvmm_profiler.h;h=80ac8746ab6cc764b68ad1ccc6394dbc200949a2;hp=9787db08a0995424dfb8affe11d7c492d25bc55c;hb=f3eb8bbb7c58c98b03797f2188e6c1d2a7610c15;hpb=4f0bb09709fcff0e08aef60c1f0253bbef91f608 diff --git a/palacios/include/palacios/vmm_profiler.h b/palacios/include/palacios/vmm_telemetry.h similarity index 53% rename from palacios/include/palacios/vmm_profiler.h rename to palacios/include/palacios/vmm_telemetry.h index 9787db0..80ac874 100644 --- a/palacios/include/palacios/vmm_profiler.h +++ b/palacios/include/palacios/vmm_telemetry.h @@ -17,35 +17,45 @@ * redistribute, and modify it as specified in the file "V3VEE_LICENSE". */ -#ifndef __VMM_PROFILER_H__ -#define __VMM_PROFILER_H__ +#ifndef __VMM_TELEMETRY_H__ +#define __VMM_TELEMETRY_H__ #ifdef __V3VEE__ -#ifdef CONFIG_PROFILE_VMM +#ifdef CONFIG_TELEMETRY #include +#include struct guest_info; -struct v3_profiler { - uint_t total_exits; +struct v3_telemetry_state { - ullong_t start_time; - ullong_t end_time; + uint64_t vmm_start_tsc; + uint64_t prev_tsc; - uint_t guest_pf_cnt; + uint_t exit_cnt; + struct rb_root exit_root; - struct rb_root root; + uint32_t invoke_cnt; + uint64_t granularity; + + struct list_head cb_list; }; -void v3_init_profiler(struct guest_info * info); +void v3_init_telemetry(struct guest_info * info); + +void v3_telemetry_start_exit(struct guest_info * info); +void v3_telemetry_end_exit(struct guest_info * info, uint_t exit_code); + +void v3_print_telemetry(struct guest_info * info); -void v3_profile_exit(struct guest_info * info, uint_t exit_code); -void v3_print_profile(struct guest_info * info); +void v3_add_telemetry_cb(struct guest_info * info, + void (*telemetry_fn)(struct guest_info * info, void * private_data), + void * private_data); #endif