X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Fmodules%2Ftext%2FbatchAnalysis.c;h=12dea8d53bc2c0b1992651ee500f3123372b7cc8;hb=a970363f31999693ffbc0d7d6cf8a15d03677d64;hp=188c222156f6ea269c0917f4fe1266eed47856b6;hpb=56e2912466faeec480ba83ab3ad89993db5da9f1;p=lttv.git diff --git a/ltt/branches/poly/lttv/modules/text/batchAnalysis.c b/ltt/branches/poly/lttv/modules/text/batchAnalysis.c index 188c2221..12dea8d5 100644 --- a/ltt/branches/poly/lttv/modules/text/batchAnalysis.c +++ b/ltt/branches/poly/lttv/modules/text/batchAnalysis.c @@ -19,7 +19,11 @@ /* This module inserts a hook in the program main loop. This hook processes all the events in the main tracefile. */ +#ifdef HAVE_CONFIG_H +#include +#endif +#include #include #include #include @@ -47,8 +51,6 @@ static char *a_trace; static gboolean a_stats; -LttvFilter *a_lttv_filter; - void lttv_trace_option(void *hook_data) { LttTrace *trace; @@ -61,7 +63,7 @@ void lttv_trace_option(void *hook_data) static gboolean process_traceset(void *hook_data, void *call_data) { - LttvAttributeValue value; + LttvAttributeValue value_expression, value_filter; LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes()); @@ -83,12 +85,15 @@ static gboolean process_traceset(void *hook_data, void *call_data) if(a_stats) lttv_stats_add_event_hooks(tscs); g_assert(lttv_iattribute_find_by_path(attributes, "filter/expression", - LTTV_POINTER, &value)); + LTTV_POINTER, &value_expression)); + + g_assert(lttv_iattribute_find_by_path(attributes, "filter/lttv_filter", + LTTV_POINTER, &value_filter)); + + *(value_filter.v_pointer) = lttv_filter_new(); + //g_debug("Filter string: %s",((GString*)*(value_expression.v_pointer))->str); - a_lttv_filter = lttv_filter_new(); - g_debug("Filter string: %s",((GString*)*(value.v_pointer))->str); - g_assert(lttv_filter_append_expression(a_lttv_filter,((GString*)*(value.v_pointer))->str)); - g_debug("Filter updated"); + lttv_filter_append_expression(*(value_filter.v_pointer),((GString*)*(value_expression.v_pointer))->str); //lttv_traceset_context_add_hooks(tc, //before_traceset, after_traceset, NULL, before_trace, after_trace, @@ -113,7 +118,6 @@ static gboolean process_traceset(void *hook_data, void *call_data) G_MAXULONG, NULL); - g_info("BatchAnalysis destroy context"); //lttv_traceset_context_remove_hooks(tc, //before_traceset, after_traceset, NULL, before_trace, after_trace, @@ -125,7 +129,9 @@ static gboolean process_traceset(void *hook_data, void *call_data) event_hook, NULL); - lttv_filter_destroy(a_lttv_filter); + g_info("BatchAnalysis destroy context"); + + lttv_filter_destroy(*(value_filter.v_pointer)); lttv_state_remove_event_hooks(&tscs->parent); if(a_stats) lttv_stats_remove_event_hooks(tscs); lttv_context_fini(tc); @@ -202,7 +208,6 @@ static void init() lttv_hooks_add(main_hooks, process_traceset, NULL, LTTV_PRIO_DEFAULT); } - static void destroy() { guint i, nb; @@ -236,7 +241,6 @@ static void destroy() lttv_traceset_destroy(traceset); } - LTTV_MODULE("batchAnalysis", "Batch processing of a trace", \ "Run through a trace calling all the registered hooks", \ init, destroy, "state", "stats", "option","textFilter")