/* 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 <config.h>
+#endif
+#include <glib.h>
#include <lttv/lttv.h>
#include <lttv/attribute.h>
#include <lttv/hook.h>
#include <lttv/tracecontext.h>
#include <lttv/state.h>
#include <lttv/stats.h>
+#include <lttv/filter.h>
#include <ltt/trace.h>
static LttvTraceset *traceset;
static gboolean process_traceset(void *hook_data, void *call_data)
{
+ LttvAttributeValue value_expression, value_filter;
+
+ char * testval = 0x88888;
+
+ LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
+
LttvTracesetStats *tscs;
LttvTracesetContext *tc;
lttv_state_add_event_hooks(&tscs->parent);
if(a_stats) lttv_stats_add_event_hooks(tscs);
+ g_assert(lttv_iattribute_find_by_path(attributes, "filter/expression",
+ 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);
+
+ 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,
//NULL, before_tracefile, after_tracefile, NULL, before_event, after_event);
G_MAXULONG,
NULL);
- g_info("BatchAnalysis destroy context");
//lttv_traceset_context_remove_hooks(tc,
//before_traceset, after_traceset, NULL, before_trace, after_trace,
event_hook,
NULL);
+ 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);
g_object_unref(tscs);
g_info("BatchAnalysis end process traceset");
+ return FALSE;
}
lttv_hooks_add(main_hooks, process_traceset, NULL, LTTV_PRIO_DEFAULT);
}
-
static void destroy()
{
guint i, nb;
for(i = 0 ; i < nb ; i++) {
trace = lttv_traceset_get(traceset, i);
ltt_trace_close(lttv_trace(trace));
- lttv_trace_destroy(trace);
+ /* This will be done by lttv_traceset_destroy */
+ //lttv_trace_destroy(trace);
}
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")
+ init, destroy, "state", "stats", "option","textFilter")