initProcessing takes a va_arg rather than an lttv-specific type
[lttv.git] / lttv / modules / text / batchAnalysis.c
index f78f37749f28e27f7d4f22ae5bfe6eea600f5c71..4b02f33250f886c17082ed4e18537355e7627b5f 100644 (file)
@@ -34,6 +34,7 @@
 #include <lttv/stats.h>
 #include <lttv/filter.h>
 #include <ltt/trace.h>
+#include <lttv/sync/sync_chain_lttv.h>
 
 static LttvTraceset *traceset;
 
@@ -74,6 +75,7 @@ static gboolean process_traceset(void *hook_data, void *call_data)
   LttvTracesetContext *tc;
 
   LttTime start, end;
+  gboolean retval;
 
   g_info("BatchAnalysis begin process traceset");
 
@@ -88,14 +90,26 @@ static gboolean process_traceset(void *hook_data, void *call_data)
   g_info("BatchAnalysis initialize context");
 
   lttv_context_init(tc, traceset);
+
+  syncTraceset(tc);
+
   lttv_state_add_event_hooks(tc);
   if(a_stats) lttv_stats_add_event_hooks(tscs);
 
-  g_assert(lttv_iattribute_find_by_path(attributes, "filter/expression",
-      LTTV_POINTER, &value_expression));
+  retval= lttv_iattribute_find_by_path(attributes, "filter/expression",
+    LTTV_POINTER, &value_expression);
+  g_assert(retval);
+
+  retval= lttv_iattribute_find_by_path(attributes, "filter/lttv_filter",
+    LTTV_POINTER, &value_filter);
+  g_assert(retval);
 
-  g_assert(lttv_iattribute_find_by_path(attributes, "filter/lttv_filter",
-      LTTV_POINTER, &value_filter));
+  /* Repeat the search for the first element, the second search might have
+   * moved the first element (by creating the second element)
+   */
+  retval= lttv_iattribute_find_by_path(attributes, "filter/expression",
+    LTTV_POINTER, &value_expression);
+  g_assert(retval);
 
   *(value_filter.v_pointer) = lttv_filter_new();
   //g_debug("Filter string: %s",((GString*)*(value_expression.v_pointer))->str);
@@ -157,6 +171,7 @@ static void init()
   LttvAttributeValue value;
 
   LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
+  gboolean retval;
 
   g_info("Init batchAnalysis.c");
 
@@ -184,23 +199,29 @@ static void init()
   //after_event = lttv_hooks_new();
   event_hook = lttv_hooks_new();
 
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/traceset/before",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/traceset/before",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = before_traceset;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/traceset/after",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/traceset/after",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = after_traceset;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/trace/before",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/trace/before",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = before_trace;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/trace/after",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/trace/after",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = after_trace;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/tracefile/before",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/tracefile/before",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = before_tracefile;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/tracefile/after",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/tracefile/after",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = after_tracefile;
   //g_assert(lttv_iattribute_find_by_path(attributes, "hooks/event/before",
   //    LTTV_POINTER, &value));
@@ -208,12 +229,14 @@ static void init()
   //g_assert(lttv_iattribute_find_by_path(attributes, "hooks/event/after",
   //    LTTV_POINTER, &value));
   //*(value.v_pointer) = after_event;
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/event",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/event",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   *(value.v_pointer) = event_hook;
 
-  g_assert(lttv_iattribute_find_by_path(attributes, "hooks/main/before",
-      LTTV_POINTER, &value));
+  retval= lttv_iattribute_find_by_path(attributes, "hooks/main/before",
+    LTTV_POINTER, &value);
+  g_assert(retval);
   g_assert((main_hooks = *(value.v_pointer)) != NULL);
   lttv_hooks_add(main_hooks, process_traceset, NULL, LTTV_PRIO_DEFAULT);
 }
@@ -253,4 +276,4 @@ static void destroy()
 
 LTTV_MODULE("batchAnalysis", "Batch processing of a trace", \
     "Run through a trace calling all the registered hooks", \
-    init, destroy, "state", "stats", "option","textFilter")
+    init, destroy, "state", "stats", "option","textFilter", "sync")
This page took 0.026816 seconds and 4 git commands to generate.