X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Fstats.c;h=7944bcd68e2bd326d4131e8c9c4723adea6ba881;hb=0292757b8dbc9107de3cdf01eb6dd1d8fe726663;hp=0bef479e5ce7b7f269e8f9dd560c0152ba6ab42d;hpb=dfdd6b48173106ef88d2e8a007ea516b8f02e414;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/stats.c b/ltt/branches/poly/lttv/lttv/stats.c index 0bef479e..7944bcd6 100644 --- a/ltt/branches/poly/lttv/lttv/stats.c +++ b/ltt/branches/poly/lttv/lttv/stats.c @@ -724,6 +724,20 @@ gboolean process_exit(void *hook_data, void *call_data) return FALSE; } +gboolean before_enum_process_state(void *hook_data, void *call_data) +{ + mode_end((LttvTracefileStats *)call_data); + after_mode_end((LttvTracefileStats *)call_data); + mode_change((LttvTracefileStats *)call_data); + return FALSE; +} + +gboolean after_enum_process_state(void *hook_data, void *call_data) +{ + update_event_tree((LttvTracefileStats *)call_data); + return FALSE; +} + gboolean process_free(void *hook_data, void *call_data) { return FALSE; @@ -911,16 +925,16 @@ lttv_stats_sum_trace(LttvTraceStats *self, LttvAttribute *ts_stats) } } if(!trace_is_summed) { - //lttv_attribute_recursive_add(function_tree, mode_types_tree); + lttv_attribute_recursive_add(function_tree, mode_types_tree); } } if(!trace_is_summed) { - //lttv_attribute_recursive_add(cpu_tree, function_tree); - //lttv_attribute_recursive_add(process_tree, function_tree); - //lttv_attribute_recursive_add(trace_cpu_tree, function_tree); - //lttv_attribute_recursive_add(main_tree, function_tree); + lttv_attribute_recursive_add(cpu_tree, function_tree); + lttv_attribute_recursive_add(process_tree, function_tree); + lttv_attribute_recursive_add(trace_cpu_tree, function_tree); + lttv_attribute_recursive_add(main_tree, function_tree); } - //lttv_attribute_recursive_add(ts_stats, function_tree); + lttv_attribute_recursive_add(ts_stats, function_tree); } } } @@ -1000,9 +1014,9 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self) /* Find the eventtype id for the following events and register the associated by id hooks. */ - hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 11); - g_array_set_size(hooks, 11); - hn=0; + hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 12); + g_array_set_size(hooks, 12); + hn=0; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY, @@ -1080,14 +1094,22 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self) before_function_exit, NULL, &g_array_index(hooks, LttvTraceHook, hn++)); if(ret) hn--; - + + /* statedump-related hooks */ + ret = lttv_trace_find_hook(ts->parent.parent.t, + LTT_FACILITY_STATEDUMP, LTT_EVENT_ENUM_PROCESS_STATE, + LTT_FIELD_PID, LTT_FIELD_PARENT_PID, LTT_FIELD_NAME, + before_enum_process_state, NULL, + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; + g_array_set_size(hooks, hn); before_hooks = hooks; - hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 14); - g_array_set_size(hooks, 14); - hn=0; + hooks = g_array_sized_new(FALSE, FALSE, sizeof(LttvTraceHook), 15); + g_array_set_size(hooks, 15); + hn=0; ret = lttv_trace_find_hook(ts->parent.parent.t, LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY, @@ -1186,7 +1208,15 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self) after_function_exit, NULL, &g_array_index(hooks, LttvTraceHook, hn++)); if(ret) hn--; - + + /* statedump-related hooks */ + ret = lttv_trace_find_hook(ts->parent.parent.t, + LTT_FACILITY_STATEDUMP, LTT_EVENT_ENUM_PROCESS_STATE, + LTT_FIELD_PID, LTT_FIELD_PARENT_PID, LTT_FIELD_NAME, + after_enum_process_state, NULL, + &g_array_index(hooks, LttvTraceHook, hn++)); + if(ret) hn--; + g_array_set_size(hooks, hn); after_hooks = hooks;