X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmain%2Fstats.c;h=c577ab77bb2112df29c52c41ae5502edeff20a30;hb=08b1c66e3a5ad9588d08f9477af98c0cda4f070c;hp=8415b4e42218d215458dec1be2a9cd391cfc2deb;hpb=2a2fa4f0852b2a2701733c370059bad8aa000b03;p=lttv.git diff --git a/ltt/branches/poly/lttv/main/stats.c b/ltt/branches/poly/lttv/main/stats.c index 8415b4e4..c577ab77 100644 --- a/ltt/branches/poly/lttv/main/stats.c +++ b/ltt/branches/poly/lttv/main/stats.c @@ -18,6 +18,7 @@ #include +#include #include #include #include @@ -53,7 +54,7 @@ find_event_tree(LttvTracefileStats *tfcs, GQuark process, GQuark cpu, static void init(LttvTracesetStats *self, LttvTraceset *ts) { - guint i, j, nb_trace, nb_control, nb_per_cpu, nb_tracefile; + guint i, j, nb_trace, nb_tracefile; LttvTraceContext *tc; @@ -75,17 +76,11 @@ init(LttvTracesetStats *self, LttvTraceset *ts) tcs = (LttvTraceStats *)tc = (LTTV_TRACESET_CONTEXT(self)->traces[i]); tcs->stats = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL); - nb_control = ltt_trace_control_tracefile_number(tc->t); - nb_per_cpu = ltt_trace_per_cpu_tracefile_number(tc->t); - nb_tracefile = nb_control + nb_per_cpu; - for(j = 0 ; j < nb_tracefile ; j++) { - if(j < nb_control) { - tfcs = LTTV_TRACEFILE_STATS(tc->control_tracefiles[j]); - } - else { - tfcs = LTTV_TRACEFILE_STATS(tc->per_cpu_tracefiles[j - nb_control]); - } + nb_tracefile = ltt_trace_control_tracefile_number(tc->t) + + ltt_trace_per_cpu_tracefile_number(tc->t); + for(j = 0 ; j < nb_tracefile ; j++) { + tfcs = LTTV_TRACEFILE_STATS(tc->tracefiles[j]); tfcs->stats = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL); find_event_tree(tfcs, LTTV_STATS_PROCESS_UNKNOWN, tfcs->parent.cpu_name, LTTV_STATE_MODE_UNKNOWN, @@ -121,17 +116,11 @@ fini(LttvTracesetStats *self) tcs = (LttvTraceStats *)tc = (LTTV_TRACESET_CONTEXT(self)->traces[i]); lttv_attribute_recursive_free(tcs->stats); - nb_tracefile = ltt_trace_control_tracefile_number(tc->t); - for(j = 0 ; j < nb_tracefile ; j++) { - tfcs = (LttvTracefileStats *)tfc = tc->control_tracefiles[j]; - lttv_attribute_recursive_free(tfcs->stats); - tfcs->current_events_tree = NULL; - tfcs->current_event_types_tree = NULL; - } + nb_tracefile = ltt_trace_control_tracefile_number(tc->t) + + ltt_trace_per_cpu_tracefile_number(tc->t); - nb_tracefile = ltt_trace_per_cpu_tracefile_number(tc->t); for(j = 0 ; j < nb_tracefile ; j++) { - tfcs = (LttvTracefileStats *)tfc = tc->per_cpu_tracefiles[j]; + tfcs = (LttvTracefileStats *)tfc = tc->tracefiles[j]; lttv_attribute_recursive_free(tfcs->stats); tfcs->current_events_tree = NULL; tfcs->current_event_types_tree = NULL; @@ -203,7 +192,7 @@ lttv_traceset_stats_get_type(void) (GClassInitFunc) traceset_stats_class_init, /* class_init */ NULL, /* class_finalize */ NULL, /* class_data */ - sizeof (LttvTracesetContext), + sizeof (LttvTracesetStats), 0, /* n_preallocs */ (GInstanceInitFunc) traceset_stats_instance_init /* instance_init */ }; @@ -631,7 +620,7 @@ lttv_stats_add_event_hooks(LttvTracesetStats *self) { LttvTraceset *traceset = self->parent.parent.ts; - guint i, j, k, nb_trace, nb_control, nb_per_cpu, nb_tracefile; + guint i, j, k, nb_trace, nb_tracefile; LttFacility *f; @@ -720,18 +709,11 @@ lttv_stats_add_event_hooks(LttvTracesetStats *self) /* Add these hooks to each before_event_by_id hooks list */ - nb_control = ltt_trace_control_tracefile_number(ts->parent.parent.t); - nb_per_cpu = ltt_trace_per_cpu_tracefile_number(ts->parent.parent.t); - nb_tracefile = nb_control + nb_per_cpu; - for(j = 0 ; j < nb_tracefile ; j++) { - if(j < nb_control) { - tfs = LTTV_TRACEFILE_STATS(ts->parent.parent.control_tracefiles[j]); - } - else { - tfs = LTTV_TRACEFILE_STATS(ts->parent.parent.per_cpu_tracefiles[ - j-nb_control]); - } + nb_tracefile = ltt_trace_control_tracefile_number(ts->parent.parent.t) + + ltt_trace_per_cpu_tracefile_number(ts->parent.parent.t); + for(j = 0 ; j < nb_tracefile ; j++) { + tfs = LTTV_TRACEFILE_STATS(ts->parent.parent.tracefiles[j]); lttv_hooks_add(tfs->parent.parent.after_event, every_event, NULL); for(k = 0 ; k < before_hooks->len ; k++) { @@ -762,7 +744,7 @@ lttv_stats_remove_event_hooks(LttvTracesetStats *self) { LttvTraceset *traceset = self->parent.parent.ts; - guint i, j, k, nb_trace, nb_control, nb_per_cpu, nb_tracefile; + guint i, j, k, nb_trace, nb_tracefile; LttvTraceStats *ts; @@ -788,18 +770,11 @@ lttv_stats_remove_event_hooks(LttvTracesetStats *self) /* Add these hooks to each before_event_by_id hooks list */ - nb_control = ltt_trace_control_tracefile_number(ts->parent.parent.t); - nb_per_cpu = ltt_trace_per_cpu_tracefile_number(ts->parent.parent.t); - nb_tracefile = nb_control + nb_per_cpu; - for(j = 0 ; j < nb_tracefile ; j++) { - if(j < nb_control) { - tfs = LTTV_TRACEFILE_STATS(ts->parent.parent.control_tracefiles[j]); - } - else { - tfs =LTTV_TRACEFILE_STATS(ts->parent.parent.per_cpu_tracefiles[ - j-nb_control]); - } + nb_tracefile = ltt_trace_control_tracefile_number(ts->parent.parent.t) + + ltt_trace_per_cpu_tracefile_number(ts->parent.parent.t); + for(j = 0 ; j < nb_tracefile ; j++) { + tfs = LTTV_TRACEFILE_STATS(ts->parent.parent.tracefiles[j]); lttv_hooks_remove_data(tfs->parent.parent.after_event, every_event, NULL); @@ -824,27 +799,6 @@ lttv_stats_remove_event_hooks(LttvTracesetStats *self) } -void lttv_stats_init(int argc, char **argv) -{ - LTTV_STATS_PROCESS_UNKNOWN = g_quark_from_string("unknown process"); - LTTV_STATS_PROCESSES = g_quark_from_string("processes"); - LTTV_STATS_CPU = g_quark_from_string("cpu"); - LTTV_STATS_MODE_TYPES = g_quark_from_string("mode_types"); - LTTV_STATS_MODES = g_quark_from_string("modes"); - LTTV_STATS_SUBMODES = g_quark_from_string("submodes"); - LTTV_STATS_EVENT_TYPES = g_quark_from_string("event_types"); - LTTV_STATS_CPU_TIME = g_quark_from_string("cpu time"); - LTTV_STATS_ELAPSED_TIME = g_quark_from_string("elapsed time"); - LTTV_STATS_EVENTS = g_quark_from_string("events"); - LTTV_STATS_EVENTS_COUNT = g_quark_from_string("events count"); - LTTV_STATS_BEFORE_HOOKS = g_quark_from_string("saved stats before hooks"); - LTTV_STATS_AFTER_HOOKS = g_quark_from_string("saved stats after hooks"); -} - -void lttv_stats_destroy() -{ -} - void lttv_stats_save_attribute(LttvAttribute *attr, char *indent, FILE * fp) { LttvAttributeType type; @@ -1150,7 +1104,7 @@ gboolean lttv_stats_load_statistics(LttvTracesetStats *self) char filename[BUF_SIZE]; GMarkupParseContext * context; - GError * error; + GError * error = NULL; GMarkupParser markup_parser = { stats_parser_start_element, @@ -1197,3 +1151,30 @@ gboolean lttv_stats_load_statistics(LttvTracesetStats *self) return TRUE; } + + +static void module_init() +{ + LTTV_STATS_PROCESS_UNKNOWN = g_quark_from_string("unknown process"); + LTTV_STATS_PROCESSES = g_quark_from_string("processes"); + LTTV_STATS_CPU = g_quark_from_string("cpu"); + LTTV_STATS_MODE_TYPES = g_quark_from_string("mode_types"); + LTTV_STATS_MODES = g_quark_from_string("modes"); + LTTV_STATS_SUBMODES = g_quark_from_string("submodes"); + LTTV_STATS_EVENT_TYPES = g_quark_from_string("event_types"); + LTTV_STATS_CPU_TIME = g_quark_from_string("cpu time"); + LTTV_STATS_ELAPSED_TIME = g_quark_from_string("elapsed time"); + LTTV_STATS_EVENTS = g_quark_from_string("events"); + LTTV_STATS_EVENTS_COUNT = g_quark_from_string("events count"); + LTTV_STATS_BEFORE_HOOKS = g_quark_from_string("saved stats before hooks"); + LTTV_STATS_AFTER_HOOKS = g_quark_from_string("saved stats after hooks"); +} + +static void module_destroy() +{ +} + + +LTTV_MODULE("stats", "Compute processes statistics", \ + "Accumulate statistics for event types, processes and CPUs", \ + module_init, module_destroy, "state");