fix request state computation upon traceset change for detailed event list
[lttv.git] / ltt / branches / poly / lttv / lttv / stats.c
index 678978d7fca773309dd956d40b839a34e9ef0409..23a9cca8481b0848f17bc0855fdc068d4be3aa73 100644 (file)
@@ -47,9 +47,7 @@ GQuark
   LTTV_STATS_USE_COUNT,
   LTTV_STATS,
   LTTV_STATS_TRACEFILES,
-  LTTV_STATS_SUMMED;
-
-static GQuark
+  LTTV_STATS_SUMMED,
   LTTV_STATS_BEFORE_HOOKS,
   LTTV_STATS_AFTER_HOOKS;
 
@@ -58,8 +56,8 @@ find_event_tree(LttvTracefileStats *tfcs, GQuark pid_time, GQuark cpu,
     GQuark mode, GQuark sub_mode, LttvAttribute **events_tree, 
     LttvAttribute **event_types_tree);
 
-static void
-init(LttvTracesetStats *self, LttvTraceset *ts)
+
+static void lttv_stats_init(LttvTracesetStats *self)
 {
   guint i, j, nb_trace, nb_tracefile;
 
@@ -80,8 +78,7 @@ init(LttvTracesetStats *self, LttvTraceset *ts)
     *stats_tree,
     *tracefiles_stats;
 
-  LTTV_TRACESET_CONTEXT_CLASS(g_type_class_peek(LTTV_TRACESET_STATE_TYPE))->
-      init((LttvTracesetContext *)self, ts);
+  LttvTraceset *ts = self->parent.parent.ts;
 
   self->stats = lttv_attribute_find_subdir(
                       lttv_traceset_attribute(self->parent.parent.ts),
@@ -90,7 +87,7 @@ init(LttvTracesetStats *self, LttvTraceset *ts)
                       LTTV_STATS_USE_COUNT, 
                       LTTV_UINT, &v);
 
-  *(v.v_uint)++;
+  (*(v.v_uint))++;
   if(*(v.v_uint) == 1) { 
     g_assert(lttv_attribute_get_number(self->stats) == 0);
   }
@@ -107,7 +104,7 @@ init(LttvTracesetStats *self, LttvTraceset *ts)
     lttv_attribute_find(tcs->parent.parent.t_a, LTTV_STATS_USE_COUNT, 
         LTTV_UINT, &v);
 
-    *(v.v_uint)++;
+    (*(v.v_uint))++;
     if(*(v.v_uint) == 1) { 
       g_assert(lttv_attribute_get_number(tcs->stats) == 0);
     }
@@ -127,10 +124,10 @@ init(LttvTracesetStats *self, LttvTraceset *ts)
           &tfcs->current_event_types_tree);
     }
   }
+
 }
 
-static void
-fini(LttvTracesetStats *self)
+static void lttv_stats_fini(LttvTracesetStats *self)
 {
   guint i, j, nb_trace, nb_tracefile;
 
@@ -152,7 +149,7 @@ fini(LttvTracesetStats *self)
 
   lttv_attribute_find(self->parent.parent.ts_a, LTTV_STATS_USE_COUNT, 
         LTTV_UINT, &v);
-  *(v.v_uint)--;
+  (*(v.v_uint))--;
 
   if(*(v.v_uint) == 0) {
     lttv_attribute_remove_by_name(self->parent.parent.ts_a, LTTV_STATS);
@@ -167,7 +164,7 @@ fini(LttvTracesetStats *self)
 
     lttv_attribute_find(tcs->parent.parent.t_a, LTTV_STATS_USE_COUNT, 
         LTTV_UINT, &v);
-    *(v.v_uint)--;
+    (*(v.v_uint))--;
 
     if(*(v.v_uint) == 0) { 
       lttv_attribute_remove_by_name(tcs->parent.parent.t_a,LTTV_STATS);
@@ -189,6 +186,32 @@ fini(LttvTracesetStats *self)
       tfcs->current_event_types_tree = NULL;
     }
   }
+}
+
+
+void lttv_stats_reset(LttvTracesetStats *self)
+{
+  lttv_stats_fini(self);
+  lttv_stats_init(self);
+}
+
+
+
+static void
+init(LttvTracesetStats *self, LttvTraceset *ts)
+{
+  LTTV_TRACESET_CONTEXT_CLASS(g_type_class_peek(LTTV_TRACESET_STATE_TYPE))->
+      init((LttvTracesetContext *)self, ts);
+  
+  lttv_stats_init(self);
+}
+
+
+static void
+fini(LttvTracesetStats *self)
+{
+  lttv_stats_fini(self);
+
   LTTV_TRACESET_CONTEXT_CLASS(g_type_class_peek(LTTV_TRACESET_STATE_TYPE))->
       fini((LttvTracesetContext *)self);
 }
@@ -785,14 +808,14 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self)
     g_array_set_size(hooks, 7);
 
     ret = lttv_trace_find_hook(ts->parent.parent.t,
-        LTT_FACILITY_KERNEL, LTT_EVENT_SYSCALL_ENTRY,
+        LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY,
         LTT_FIELD_SYSCALL_ID, 0, 0,
         before_syscall_entry, NULL, 
         &g_array_index(hooks, LttvTraceHook, 0));
     g_assert(!ret);
 
     ret = lttv_trace_find_hook(ts->parent.parent.t,
-        LTT_FACILITY_KERNEL, LTT_EVENT_SYSCALL_EXIT,
+        LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_EXIT,
         0, 0, 0,
         before_syscall_exit, NULL, 
         &g_array_index(hooks, LttvTraceHook, 1));
@@ -839,14 +862,14 @@ void lttv_stats_add_event_hooks(LttvTracesetStats *self)
     g_array_set_size(hooks, 9);
 
     ret = lttv_trace_find_hook(ts->parent.parent.t,
-        LTT_FACILITY_KERNEL, LTT_EVENT_SYSCALL_ENTRY,
+        LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_ENTRY,
         LTT_FIELD_SYSCALL_ID, 0, 0,
         after_syscall_entry, NULL, 
         &g_array_index(hooks, LttvTraceHook, 0));
     g_assert(!ret);
 
     ret = lttv_trace_find_hook(ts->parent.parent.t,
-        LTT_FACILITY_KERNEL, LTT_EVENT_SYSCALL_EXIT,
+        LTT_FACILITY_KERNEL_ARCH, LTT_EVENT_SYSCALL_EXIT,
         0, 0, 0,
         after_syscall_exit, NULL, 
         &g_array_index(hooks, LttvTraceHook, 1));
This page took 0.025755 seconds and 4 git commands to generate.