Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


ported the profiler over to the telemetry interface
[palacios.git] / 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 (file)
  * 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 <palacios/vmm_rbtree.h>
+#include <palacios/vmm_list.h>
 
 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