Initial commit for control flow view
[lttv.git] / lttv / lttv / traceset.c
index b10564c5dce8d040a7fafb44bfb2d97ec8f9981e..542101607d064d61fd322fc97409fb425bcff3c1 100644 (file)
@@ -68,6 +68,7 @@ LttvTraceset *lttv_traceset_new(void)
        ts->event_hooks = lttv_hooks_new();
 
        ts->state_trace_handle_index = g_ptr_array_new();
+       ts->has_precomputed_states = FALSE;
 
        return ts;
 }
@@ -421,7 +422,7 @@ guint lttv_trace_get_num_cpu(LttvTrace *t)
        return 24;
 }
 
-LttvTracesetPosition *lttv_traceset_create_position(LttvTraceset *traceset)
+LttvTracesetPosition *lttv_traceset_create_current_position(LttvTraceset *traceset)
 {
        LttvTracesetPosition *traceset_pos;
        
@@ -614,6 +615,8 @@ guint64 lttv_traceset_position_get_timestamp(const LttvTracesetPosition *pos)
        }
         /* Reassign the previously saved position */
         lttv_traceset_seek_to_position(&previous_pos);
+        /*We must desallocate because the function bt_iter_get_pos() does a g_new */
+        bt_iter_free_pos(previous_pos.bt_pos);
        return timestamp;
 }
 
@@ -622,6 +625,8 @@ LttTime  lttv_traceset_position_get_time(const LttvTracesetPosition *pos)
         return ltt_time_from_uint64(lttv_traceset_position_get_timestamp(pos));
 }
 
+
+
 int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvTracesetPosition *pos2)
 {
 #warning " TODO :Rename for lttv_traceset_position_equals && Must return COMPARAISON OF THE 2 POSITION && verify if it is the best way to compare position"
@@ -654,3 +659,35 @@ int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvT
                 return 1;
        }
 }
+
+int lttv_traceset_position_time_compare(const LttvTracesetPosition *pos1, 
+                                       const LttvTracesetPosition *pos2)
+{
+        guint64 timeStampPos1,timeStampPos2;
+
+       timeStampPos1 = lttv_traceset_position_get_timestamp(pos1);
+        timeStampPos2 = lttv_traceset_position_get_timestamp(pos2);
+        
+       return timeStampPos1 - timeStampPos2;
+}
+int lttv_traceset_position_compare_current(const LttvTraceset *ts, 
+                                          const LttvTracesetPosition *pos)
+{
+       int result = 0;
+       LttvTracesetPosition *curPos = lttv_traceset_create_current_position(ts);
+
+       result = lttv_traceset_position_compare(curPos,pos);
+
+       lttv_traceset_destroy_position(curPos);
+
+       return result;
+}
+
+LttTime lttv_traceset_get_current_time(const LttvTraceset *ts)
+{
+       LttvTracesetPosition *curPos = lttv_traceset_create_current_position(ts);
+       guint64 currentTimestamp = lttv_traceset_position_get_timestamp(curPos);
+       lttv_traceset_destroy_position(curPos);
+
+        return ltt_time_from_uint64(currentTimestamp);
+}
This page took 0.023793 seconds and 4 git commands to generate.