X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Fstats.c;h=b56eb36fda3a9107785a86fe42109cf9cd7d9b2b;hb=58c88a41c3beff0c4c6ff7d856ab2355820d9f16;hp=d36438dc5a8327c50ee88e30714050dff949e93e;hpb=359b29488aa316f1257e9b41281ad8c373588636;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/stats.c b/ltt/branches/poly/lttv/lttv/stats.c index d36438dc..b56eb36f 100644 --- a/ltt/branches/poly/lttv/lttv/stats.c +++ b/ltt/branches/poly/lttv/lttv/stats.c @@ -80,9 +80,12 @@ init(LttvTracesetStats *self, LttvTraceset *ts) LTTV_TRACESET_CONTEXT_CLASS(g_type_class_peek(LTTV_TRACESET_STATE_TYPE))-> init((LttvTracesetContext *)self, ts); - self->stats =lttv_attribute_find_subdir(self->parent.parent.ts_a,LTTV_STATS); - lttv_attribute_find(self->parent.parent.ts_a, LTTV_STATS_USE_COUNT, - LTTV_UINT, &v); + self->stats = lttv_attribute_find_subdir( + lttv_traceset_attribute(self->parent.parent.ts), + LTTV_STATS); + lttv_attribute_find(lttv_traceset_attribute(self->parent.parent.ts), + LTTV_STATS_USE_COUNT, + LTTV_UINT, &v); *(v.v_uint)++; if(*(v.v_uint) == 1) { @@ -121,7 +124,6 @@ init(LttvTracesetStats *self, LttvTraceset *ts) } } - static void fini(LttvTracesetStats *self) { @@ -149,7 +151,6 @@ fini(LttvTracesetStats *self) if(*(v.v_uint) == 0) { lttv_attribute_remove_by_name(self->parent.parent.ts_a, LTTV_STATS); - lttv_attribute_recursive_free(self->stats); } self->stats = NULL; @@ -165,12 +166,10 @@ fini(LttvTracesetStats *self) if(*(v.v_uint) == 0) { lttv_attribute_remove_by_name(tcs->parent.parent.t_a,LTTV_STATS); - lttv_attribute_recursive_free(tcs->stats); tracefiles_stats = lttv_attribute_find_subdir(tcs->parent.parent.t_a, LTTV_STATS_TRACEFILES); lttv_attribute_remove_by_name(tcs->parent.parent.t_a, LTTV_STATS_TRACEFILES); - lttv_attribute_recursive_free(tracefiles_stats); } tcs->stats = NULL; @@ -578,7 +577,7 @@ gboolean every_event(void *hook_data, void *call_data) void lttv_stats_sum_trace(LttvTraceStats *self) { - LttvTraceStats *tcs; + LttvAttribute *sum_container = self->stats; LttvAttributeType type; @@ -597,16 +596,18 @@ lttv_stats_sum_trace(LttvTraceStats *self) *cpu_events_tree, *process_modes_tree, *trace_cpu_tree, *trace_modes_tree; - main_tree = self->stats; + main_tree = sum_container; - lttv_attribute_find(self->parent.parent.t_a, LTTV_STATS_SUMMED, - LTTV_UINT, &value); + lttv_attribute_find(sum_container, + LTTV_STATS_SUMMED, + LTTV_UINT, &value); if(*(value.v_uint) != 0) return; *(value.v_uint) = 1; processes_tree = lttv_attribute_find_subdir(main_tree, - LTTV_STATS_PROCESSES); - trace_modes_tree = lttv_attribute_find_subdir(main_tree, LTTV_STATS_MODES); + LTTV_STATS_PROCESSES); + trace_modes_tree = lttv_attribute_find_subdir(main_tree, + LTTV_STATS_MODES); nb_process = lttv_attribute_get_number(processes_tree); for(i = 0 ; i < nb_process ; i++) { @@ -668,10 +669,17 @@ lttv_stats_sum_trace(LttvTraceStats *self) } +gboolean lttv_stats_sum_traceset_hook(void *hook_data, void *call_data) +{ + lttv_stats_sum_traceset((LttvTracesetStats *)call_data); + return 0; +} + void lttv_stats_sum_traceset(LttvTracesetStats *self) { LttvTraceset *traceset = self->parent.parent.ts; + LttvAttribute *sum_container = self->stats; LttvTraceStats *tcs; @@ -681,12 +689,12 @@ lttv_stats_sum_traceset(LttvTracesetStats *self) LttvAttributeValue value; - lttv_attribute_find(self->parent.parent.ts_a, LTTV_STATS_SUMMED, + lttv_attribute_find(sum_container, LTTV_STATS_SUMMED, LTTV_UINT, &value); if(*(value.v_uint) != 0) return; *(value.v_uint) = 1; - traceset_modes_tree = lttv_attribute_find_subdir(self->stats, + traceset_modes_tree = lttv_attribute_find_subdir(sum_container, LTTV_STATS_MODES); nb_trace = lttv_traceset_number(traceset); @@ -700,6 +708,16 @@ lttv_stats_sum_traceset(LttvTracesetStats *self) } +// Hook wrapper. call_data is a traceset context. +gint lttv_stats_hook_add_event_hooks(void *hook_data, void *call_data) +{ + LttvTracesetStats *tss = (LttvTracesetStats*)call_data; + + lttv_stats_add_event_hooks(tss); + + return 0; +} + lttv_stats_add_event_hooks(LttvTracesetStats *self) { LttvTraceset *traceset = self->parent.parent.ts; @@ -825,6 +843,15 @@ lttv_stats_add_event_hooks(LttvTracesetStats *self) } } +// Hook wrapper. call_data is a traceset context. +gint lttv_stats_hook_remove_event_hooks(void *hook_data, void *call_data) +{ + LttvTracesetStats *tss = (LttvTracesetStats*)call_data; + + lttv_stats_remove_event_hooks(tss); + + return 0; +} lttv_stats_remove_event_hooks(LttvTracesetStats *self) {