*/
#include <glib.h>
-#include <gmodule.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
+#include <lttv/lttv.h>
#include <lttv/module.h>
-#include <lttv/gtktraceset.h>
-#include <lttv/processTrace.h>
+#include <lttvwindow/viewer.h>
+#include <lttv/tracecontext.h>
#include <lttv/hook.h>
-#include <lttv/common.h>
+#include <lttvwindow/common.h>
#include <lttv/state.h>
#include <lttv/stats.h>
#include <string.h>
-#include "../icons/hGuiStatisticInsert.xpm"
+#include "hGuiStatisticInsert.xpm"
-#define g_info(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, format)
-#define g_debug(format...) g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, format)
-
-#define PATH_LENGTH 256
+#define PATH_LENGTH 256 /* CHECK */
static LttvModule *statistic_main_win_module;
static GPtrArray * statistic_traceset;
gboolean calculate_stats;
int size;
- TimeInterval time_span;
+ //TimeInterval time_span;
gboolean shown; //indicate if the statistic is shown or not
char * filter_key;
};
-/**
- * plugin's init function
- *
- * This function initializes the Statistic Viewer functionnality through the
- * gtkTraceSet API.
- */
-G_MODULE_EXPORT void init(LttvModule *self, int argc, char *argv[]) {
-
- statistic_main_win_module = lttv_module_require(self, "mainwin", argc, argv);
-
- if(statistic_main_win_module == NULL){
- g_critical("Can't load Statistic Viewer : missing mainwin\n");
- return;
- }
-
- statistic_traceset = g_ptr_array_new ();
-
- /* Register the toolbar insert button */
- toolbar_item_reg(hGuiStatisticInsert_xpm, "Insert Statistic Viewer", h_gui_statistic);
-
- /* Register the menu item insert entry */
- menu_item_reg("/", "Insert Statistic Viewer", h_gui_statistic);
-
-}
-
-void statistic_destroy_walk(gpointer data, gpointer user_data)
-{
- gui_statistic_destructor((StatisticViewerData*)data);
-}
-
-/**
- * plugin's destroy function
- *
- * This function releases the memory reserved by the module and unregisters
- * everything that has been registered in the gtkTraceSet API.
- */
-G_MODULE_EXPORT void destroy() {
- int i;
-
- if(g_statistic_viewer_data_list){
- g_slist_foreach(g_statistic_viewer_data_list, statistic_destroy_walk, NULL );
- g_slist_free(g_statistic_viewer_data_list);
- }
- g_ptr_array_free (statistic_traceset, TRUE);
-
- /* Unregister the toolbar insert button */
- toolbar_item_unreg(h_gui_statistic);
-
- /* Unregister the menu item insert entry */
- menu_item_unreg(h_gui_statistic);
-}
-
-
void
gui_statistic_free(StatisticViewerData *statistic_viewer_data)
{
if(statistic_viewer_data){
- unreg_update_time_window(statistic_update_time_window,statistic_viewer_data, statistic_viewer_data->mw);
- unreg_show_viewer(statistic_show_viewer,statistic_viewer_data, statistic_viewer_data->mw);
- unreg_update_traceset(statistic_traceset_changed,statistic_viewer_data, statistic_viewer_data->mw);
+ lttvwindow_unregister_time_window_notify(statistic_viewer_data->mw,
+ statistic_update_time_window,statistic_viewer_data);
+ lttvwindow_unregister_show(statistic_viewer_data->mw,
+ statistic_show_viewer,statistic_viewer_data);
+ lttvwindow_unregister_traceset_notify(statistic_viewer_data->mw,
+ statistic_traceset_changed,statistic_viewer_data);
g_hash_table_destroy(statistic_viewer_data->statistic_hash);
g_free(statistic_viewer_data->filter_key);
{
/* May already been done by GTK window closing */
if(GTK_IS_WIDGET(statistic_viewer_data->hpaned_v)){
+ gui_statistic_free(statistic_viewer_data);
gtk_widget_destroy(statistic_viewer_data->hpaned_v);
statistic_viewer_data = NULL;
}
StatisticViewerData* statistic_viewer_data = g_new(StatisticViewerData,1);
statistic_viewer_data->mw = parent_window;
- statistic_viewer_data->stats = get_traceset_stats_api(statistic_viewer_data->mw);
+ statistic_viewer_data->stats =
+ lttvwindow_get_traceset_stats(statistic_viewer_data->mw);
statistic_viewer_data->calculate_stats = statistic_insert_traceset_stats((void *)statistic_viewer_data->stats);
- reg_update_time_window(statistic_update_time_window,statistic_viewer_data, statistic_viewer_data->mw);
- reg_show_viewer(statistic_show_viewer,statistic_viewer_data, statistic_viewer_data->mw);
- reg_update_traceset(statistic_traceset_changed,statistic_viewer_data, statistic_viewer_data->mw);
+ lttvwindow_register_time_window_notify(statistic_viewer_data->mw,
+ statistic_update_time_window,statistic_viewer_data);
+ lttvwindow_register_show(statistic_viewer_data->mw,
+ statistic_show_viewer,statistic_viewer_data);
+ lttvwindow_register_traceset_notify(statistic_viewer_data->mw,
+ statistic_traceset_changed,statistic_viewer_data);
- statistic_viewer_data->statistic_hash = g_hash_table_new_full(g_str_hash, g_str_equal,
- statistic_destroy_hash_key,
- statistic_destroy_hash_data);
+ statistic_viewer_data->statistic_hash = g_hash_table_new_full(g_str_hash,
+ g_str_equal,
+ statistic_destroy_hash_key,
+ statistic_destroy_hash_data);
statistic_viewer_data->hpaned_v = gtk_hpaned_new();
statistic_viewer_data->store_m = gtk_tree_store_new (N_COLUMNS, G_TYPE_STRING);
- statistic_viewer_data->tree_v = gtk_tree_view_new_with_model (GTK_TREE_MODEL (statistic_viewer_data->store_m));
+ statistic_viewer_data->tree_v =
+ gtk_tree_view_new_with_model (
+ GTK_TREE_MODEL (statistic_viewer_data->store_m));
g_object_unref (G_OBJECT (statistic_viewer_data->store_m));
g_signal_connect (G_OBJECT (statistic_viewer_data->tree_v), "grab-focus",
gtk_widget_show(statistic_viewer_data->text_v);
gtk_widget_show(statistic_viewer_data->hpaned_v);
- //get the life span of the traceset and set the upper of the scroll bar
- get_traceset_time_span(statistic_viewer_data->mw, &statistic_viewer_data->time_span);
-
statistic_viewer_data->shown = FALSE;
statistic_viewer_data->filter_key = g_strdup(key);
g_object_set_data(
G_OBJECT(statistic_viewer_data->hpaned_v),
statistic_viewer_data->filter_key,
s);
-
+ /*
g_object_set_data(
G_OBJECT(statistic_viewer_data->hpaned_v),
TRACESET_TIME_SPAN,
&statistic_viewer_data->time_span);
-
+ */
+
if(statistic_viewer_data->calculate_stats){
- if(lttv_stats_load_statistics(statistic_viewer_data->stats))
- statistic_viewer_data->calculate_stats = FALSE;
+ //if(lttv_stats_load_statistics(statistic_viewer_data->stats))
+ // statistic_viewer_data->calculate_stats = FALSE;
}
if(statistic_viewer_data->calculate_stats == FALSE){
{
StatisticViewerData *statistic_viewer_data = (StatisticViewerData *)data;
MainWindow * mw = statistic_viewer_data->mw;
- set_focused_pane(mw, gtk_widget_get_parent(statistic_viewer_data->hpaned_v));
+ lttvwindow_report_focus(mw, gtk_widget_get_parent(statistic_viewer_data->hpaned_v));
}
static void
if(tscs->stats == NULL) return;
+ ts = tscs->parent.parent.ts;
+ nb = lttv_traceset_number(ts);
+ if(nb == 0)return;
+
gtk_tree_store_append (store, &iter, NULL);
gtk_tree_store_set (store, &iter,
NAME_COLUMN, "Traceset statistics",
show_tree(statistic_viewer_data, tscs->stats, &iter);
//show stats for all traces
- ts = tscs->parent.parent.ts;
- nb = lttv_traceset_number(ts);
-
for(i = 0 ; i < nb ; i++) {
tcs = (LttvTraceStats *)(LTTV_TRACESET_CONTEXT(tscs)->traces[i]);
desc = ltt_trace_system_description(tcs->parent.parent.t);
gboolean statistic_update_time_window(void * hook_data, void * call_data)
{
StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data;
- LttvTracesetContext * tsc = get_traceset_context(statistic_viewer_data->mw);
+ LttvTracesetContext * tsc =
+ lttvwindow_get_traceset_context(statistic_viewer_data->mw);
//if statistic is already calculated, do nothing
if(!statistic_viewer_data->calculate_stats){
gboolean statistic_show_viewer(void * hook_data, void * call_data)
{
StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data;
- LttvTracesetContext * tsc = get_traceset_context(statistic_viewer_data->mw);
+ LttvTracesetContext * tsc =
+ lttvwindow_get_traceset_context(statistic_viewer_data->mw);
if(statistic_viewer_data->shown == FALSE){
statistic_viewer_data->shown = TRUE;
show_traceset_stats(statistic_viewer_data);
if(statistic_viewer_data->calculate_stats){
statistic_remove_context_hooks(statistic_viewer_data,tsc);
- lttv_stats_save_statistics((LttvTracesetStats*)tsc);
+ //lttv_stats_save_statistics((LttvTracesetStats*)tsc);
}
}
{
StatisticViewerData *statistic_viewer_data = (StatisticViewerData*) hook_data;
- // gtk_tree_store_clear (statistic_viewer_data->store_m);
- // statistic_viewer_data->shown = FALSE;
+ gtk_tree_store_clear (statistic_viewer_data->store_m);
+ statistic_viewer_data->shown = FALSE;
return FALSE;
}
void statistic_add_context_hooks(StatisticViewerData * statistic_viewer_data,
LttvTracesetContext * tsc)
{
- gint i, j, nbi, nb_tracefile, nb_control, nb_per_cpu;
+ gint i, j, nbi, nb_tracefile;
LttTrace *trace;
LttvTraceContext *tc;
LttvTracefileContext *tfc;
trace = tc->t;
//if there are hooks for trace, add them here
- nb_control = ltt_trace_control_tracefile_number(trace);
- nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace);
- nb_tracefile = nb_control + nb_per_cpu;
+ nb_tracefile = ltt_trace_control_tracefile_number(trace) +
+ ltt_trace_per_cpu_tracefile_number(trace);
for(j = 0 ; j < nb_tracefile ; j++) {
tf_s = lttv_trace_selector_tracefile_get(t_s,j);
selected = lttv_tracefile_selector_get_selected(tf_s);
if(!selected) continue;
-
- if(j < nb_control)
- tfc = tc->control_tracefiles[j];
- else
- tfc = tc->per_cpu_tracefiles[j - nb_control];
+ tfc = tc->tracefiles[j];
//if there are hooks for tracefile, add them here
// lttv_tracefile_context_add_hooks(tfc, NULL,NULL,NULL,NULL,
}
}
- //add state and stats hooks
- //state_add_event_hooks_api(statistic_viewer_data->mw); //it will be added in the main window
- stats_add_event_hooks_api(statistic_viewer_data->mw);
+ lttv_stats_add_event_hooks(LTTV_TRACESET_STATS(tsc));
}
void statistic_remove_context_hooks(StatisticViewerData * statistic_viewer_data,
LttvTracesetContext * tsc)
{
- gint i, j, nbi, nb_tracefile, nb_control, nb_per_cpu;
+ gint i, j, nbi, nb_tracefile;
LttTrace *trace;
LttvTraceContext *tc;
LttvTracefileContext *tfc;
trace = tc->t;
//if there are hooks for trace, remove them here
- nb_control = ltt_trace_control_tracefile_number(trace);
- nb_per_cpu = ltt_trace_per_cpu_tracefile_number(trace);
- nb_tracefile = nb_control + nb_per_cpu;
+ nb_tracefile = ltt_trace_control_tracefile_number(trace) +
+ ltt_trace_per_cpu_tracefile_number(trace);
for(j = 0 ; j < nb_tracefile ; j++) {
tf_s = lttv_trace_selector_tracefile_get(t_s,j);
selected = lttv_tracefile_selector_get_selected(tf_s);
if(!selected) continue;
-
- if(j < nb_control)
- tfc = tc->control_tracefiles[j];
- else
- tfc = tc->per_cpu_tracefiles[j - nb_control];
+ tfc = tc->tracefiles[j];
//if there are hooks for tracefile, remove them here
// lttv_tracefile_context_remove_hooks(tfc, NULL,NULL,NULL,NULL,
}
}
- //remove state and stats hooks
- //state_remove_event_hooks_api(statistic_viewer_data->mw); //it will be done in the main window
- stats_remove_event_hooks_api(statistic_viewer_data->mw);
+ lttv_stats_remove_event_hooks(LTTV_TRACESET_STATS(tsc));
+}
+
+
+/**
+ * plugin's init function
+ *
+ * This function initializes the Statistic Viewer functionnality through the
+ * gtkTraceSet API.
+ */
+static void init() {
+
+ statistic_traceset = g_ptr_array_new ();
+
+ /* Register the toolbar insert button */
+ lttvwindow_register_toolbar(hGuiStatisticInsert_xpm, "Insert Statistic Viewer", h_gui_statistic);
+
+ /* Register the menu item insert entry */
+ lttvwindow_register_menu("/", "Insert Statistic Viewer", h_gui_statistic);
+
+}
+
+void statistic_destroy_walk(gpointer data, gpointer user_data)
+{
+ gui_statistic_destructor((StatisticViewerData*)data);
+}
+
+/**
+ * plugin's destroy function
+ *
+ * This function releases the memory reserved by the module and unregisters
+ * everything that has been registered in the gtkTraceSet API.
+ */
+static void destroy() {
+ int i;
+
+ if(g_statistic_viewer_data_list){
+ g_slist_foreach(g_statistic_viewer_data_list, statistic_destroy_walk, NULL );
+ g_slist_free(g_statistic_viewer_data_list);
+ }
+ g_ptr_array_free (statistic_traceset, TRUE);
+
+ /* Unregister the toolbar insert button */
+ lttvwindow_unregister_toolbar(h_gui_statistic);
+
+ /* Unregister the menu item insert entry */
+ lttvwindow_unregister_menu(h_gui_statistic);
}
+LTTV_MODULE("guistatistics", "Statistics viewer", \
+ "Graphical module to view statistics about processes, CPUs and systems", \
+ init, destroy, "lttvwindow")
+