fix for smp cfv, fix convert bug for 2.2 format, add task release event handling
[lttv.git] / ltt / branches / poly / lttv / lttv / state.c
index 55bd4e056c23b1cbb4c2e0ed9ff5ece030c6db51..dc5c9806bfcadd63270d47828e2c7c8606b97f30 100644 (file)
@@ -1037,6 +1037,28 @@ static gboolean process_exit(LttvTraceHook *trace_hook, LttvTracefileState *s)
   return FALSE;
 }
 
+static gboolean process_release(LttvTraceHook *trace_hook,
+                                LttvTracefileState *s)
+{
+  LttField *f;
+  guint release_pid;
+  LttvProcessState *process;
+
+  /* PID of the process to release */
+  f = trace_hook->f2;
+  release_pid = ltt_event_get_unsigned(s->parent.e, f);
+
+  process = lttv_state_find_process(s, release_pid);
+
+  if(likely(process != NULL)) {
+    /* release_task is happening at kernel level : we can now safely release
+     * the data structure of the process */
+    exit_process(s, process);
+  }
+
+  return FALSE;
+}
+
 gboolean process(void *hook_data, void *call_data)
 {
   LttvTraceHook *trace_hook = (LttvTraceHook *)hook_data;
@@ -1051,6 +1073,8 @@ gboolean process(void *hook_data, void *call_data)
     return process_fork(trace_hook, s);
   } else if(sub_id == 3) {
     return process_exit(trace_hook, s);
+  } else if(sub_id == 7) {
+    return process_release(trace_hook, s);
   }
   return 0;
 }
This page took 0.022947 seconds and 4 git commands to generate.