return -1;
}
-uint64_t bt_ctf_get_timestamp(struct bt_ctf_event *event)
+uint64_t bt_ctf_get_timestamp_raw(struct bt_ctf_event *event)
{
if (event && event->stream->has_timestamp)
return event->stream->timestamp;
else
- return 0;
+ return -1ULL;
+}
+
+uint64_t bt_ctf_get_timestamp(struct bt_ctf_event *event)
+{
+ uint64_t ts_nsec;
+ struct ctf_trace *trace;
+ struct trace_collection *tc;
+ uint64_t tc_offset;
+ uint64_t timestamp;
+
+ if (!event->stream->has_timestamp) {
+ return -1ULL;
+ }
+
+ trace = event->stream->stream_class->trace;
+ tc = trace->collection;
+ tc_offset = tc->single_clock_offset_avg;
+ timestamp = event->stream->timestamp;
+ if (event->stream->current_clock->freq == 1000000000ULL) {
+ ts_nsec = timestamp;
+ } else {
+ ts_nsec = (uint64_t) ((double) timestamp * 1000000000.0
+ / (double) event->stream->current_clock->freq);
+ }
+ ts_nsec += tc_offset;
+
+ return ts_nsec;
}
static void bt_ctf_field_set_error(int error)
const char *bt_ctf_event_name(struct bt_ctf_event *event);
/*
- * bt_ctf_get_timestamp: returns the timestamp of the event or -1ULL on error
+ * bt_ctf_get_timestamp_raw: returns the timestamp of the event as written in
+ * the packet or -1ULL on error
+ */
+uint64_t bt_ctf_get_timestamp_raw(struct bt_ctf_event *event);
+
+/*
+ * bt_ctf_get_timestamp: returns the timestamp of the event offsetted with the
+ * system clock source or -1ULL on error
*/
uint64_t bt_ctf_get_timestamp(struct bt_ctf_event *event);