+
+guint64 lttv_traceset_position_get_timestamp(const LttvTracesetPosition *pos)
+{
+ guint64 timestamp = 0;
+ /*We save the current iterator,so we can reassign it after the seek*/
+ LttvTracesetPosition previous_pos;
+ previous_pos.iter = pos->iter;
+ previous_pos.bt_pos = bt_iter_get_pos(bt_ctf_get_iter(pos->iter));
+ /* Seek to the new desired position */
+ lttv_traceset_seek_to_position(pos);
+ /*Read the event*/
+ struct bt_ctf_event *event = bt_ctf_iter_read_event(pos->iter);
+
+ if(event != NULL){
+ timestamp = bt_ctf_get_timestamp_raw(event);
+ }
+ /* Reassign the previously saved position */
+ lttv_traceset_seek_to_position(&previous_pos);
+ return timestamp;
+}
+
+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"
+ if(pos1 == NULL || pos2 == NULL){
+ return -1;
+ }
+
+ guint64 timeStampPos1,timeStampPos2;
+ guint cpuId1, cpuId2;
+ LttvEvent event1, event2;
+ int ret;
+
+ timeStampPos1 = lttv_traceset_position_get_timestamp(pos1);
+ timeStampPos2 = lttv_traceset_position_get_timestamp(pos2);
+
+ event1.bt_event = bt_ctf_iter_read_event(pos1->iter);
+ event2.bt_event = bt_ctf_iter_read_event(pos2->iter);
+
+ if(event1.bt_event == NULL || event2.bt_event == NULL){
+ return -1;
+ }
+
+ cpuId1 = lttv_traceset_get_cpuid_from_event(&event1);
+ cpuId2 = lttv_traceset_get_cpuid_from_event(&event2);
+
+ if(timeStampPos1 == timeStampPos2 && cpuId1 == cpuId2){
+ return 0;
+ }
+ else{
+ return 1;
+ }
+}