init state timestamp is beginning of trace, not 0
[lttv.git] / ltt / branches / poly / lttv / lttv / state.c
index 05852dfb784d2c70bf44f34390ec6c9b5e610ba7..f13bd8dba876b4cc960497c8de76405e92352d6a 100644 (file)
@@ -121,8 +121,6 @@ restore_init_state(LttvTraceState *self)
 
   LttvTracefileState *tfcs;
   
-  LttTime null_time = {0,0};
-
   if(self->processes != NULL) lttv_state_free_process_table(self->processes);
   self->processes = g_hash_table_new(process_hash, process_equal);
   self->nb_event = 0;
@@ -132,7 +130,7 @@ restore_init_state(LttvTraceState *self)
 
   for(i = 0 ; i < nb_tracefile ; i++) {
     tfcs = LTTV_TRACEFILE_STATE(self->parent.tracefiles[i]);
-    tfcs->parent.timestamp = null_time;
+    ltt_trace_time_span_get(self->parent.t, &tfcs->parent.timestamp, NULL);
     tfcs->saved_position = 0;
     tfcs->process = lttv_state_create_process(tfcs, NULL,0);
     tfcs->process->state->s = LTTV_STATE_RUN;
@@ -808,13 +806,13 @@ lttv_state_create_process(LttvTracefileState *tfs, LttvProcessState *parent,
   es->t = LTTV_STATE_USER_MODE;
   es->n = LTTV_STATE_SUBMODE_NONE;
   es->entry = tfs->parent.timestamp;
+  g_assert(tfs->parent.timestamp.tv_sec != 0);
   es->change = tfs->parent.timestamp;
   es->s = LTTV_STATE_WAIT_FORK;
 
   return process;
 }
 
-
 LttvProcessState *
 lttv_state_find_process_from_trace(LttvTraceState *ts, GQuark cpu, guint pid)
 {
@@ -992,7 +990,7 @@ static gboolean process_fork(LttvTraceHook *trace_hook, LttvTracefileState *s)
   guint child_pid;
 
   /* Child PID */
-  f = trace_hook->f3;
+  f = trace_hook->f2;
   child_pid = ltt_event_get_unsigned(s->parent.e, f);
 
   lttv_state_create_process(s, s->process, child_pid);
@@ -1072,7 +1070,7 @@ void lttv_state_add_event_hooks(LttvTracesetState *self)
        associated by id hooks. */
 
     hooks = g_array_new(FALSE, FALSE, sizeof(LttvTraceHook));
-    g_array_set_size(hooks, 9);
+    g_array_set_size(hooks, 8);
 
     lttv_trace_find_hook(ts->parent.t, "core","syscall_entry","syscall_id", 
        NULL, NULL, syscall_entry, &g_array_index(hooks, LttvTraceHook, 0));
@@ -1255,6 +1253,8 @@ void lttv_state_save_add_event_hooks(LttvTracesetState *self)
 
   LttvTraceHook hook_start, hook_end;
 
+  lttv_state_add_event_hooks(self);
+  
   nb_trace = lttv_traceset_number(traceset);
   for(i = 0 ; i < nb_trace ; i++) {
     ts = (LttvTraceState *)self->parent.traces[i];
@@ -1318,6 +1318,8 @@ void lttv_state_save_remove_event_hooks(LttvTracesetState *self)
           tfs->parent.event_by_id, hook_end.id), hook_end.h, NULL);
     }
   }
+  
+  lttv_state_remove_event_hooks(self);
 }
 
 gint lttv_state_save_hook_remove_event_hooks(void *hook_data, void *call_data)
This page took 0.024049 seconds and 4 git commands to generate.