size_t linebuf_len;
FILE *fp;
bt_message *tmp_event_msg;
+ uint64_t last_clock_value;
enum {
STATE_EMIT_STREAM_BEGINNING,
goto error;
}
+ /*
+ * The `dmesg` timestamp is not absolute, it's relative
+ * to the boot time.
+ */
+ bt_clock_class_set_is_absolute(dmesg_comp->clock_class,
+ BT_FALSE);
+
ret = bt_stream_class_set_default_clock_class(
dmesg_comp->stream_class, dmesg_comp->clock_class);
if (ret) {
goto error;
}
- msg = bt_message_event_create(msg_iter->pc_msg_iter,
- dmesg_comp->event_class, dmesg_comp->packet);
+ if (dmesg_comp->clock_class) {
+ msg = bt_message_event_create_with_default_clock_snapshot(
+ msg_iter->pc_msg_iter,
+ dmesg_comp->event_class, dmesg_comp->packet, ts);
+ msg_iter->last_clock_value = ts;
+ } else {
+ msg = bt_message_event_create(msg_iter->pc_msg_iter,
+ dmesg_comp->event_class, dmesg_comp->packet);
+ }
+
if (!msg) {
BT_LOGE_STR("Cannot create event message.");
goto error;
event = bt_message_event_borrow_event(msg);
BT_ASSERT(event);
-
- if (dmesg_comp->clock_class) {
- bt_event_set_default_clock_snapshot(event, ts);
- }
-
goto end;
error:
break;
case STATE_EMIT_PACKET_BEGINNING:
BT_ASSERT(dmesg_msg_iter->tmp_event_msg);
- *msg = bt_message_packet_beginning_create(
- dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+
+ if (dmesg_comp->clock_class) {
+ *msg = bt_message_packet_beginning_create_with_default_clock_snapshot(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet,
+ dmesg_msg_iter->last_clock_value);
+ } else {
+ *msg = bt_message_packet_beginning_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ }
+
dmesg_msg_iter->state = STATE_EMIT_EVENT;
break;
case STATE_EMIT_EVENT:
dmesg_msg_iter->tmp_event_msg = NULL;
break;
case STATE_EMIT_PACKET_END:
- *msg = bt_message_packet_end_create(
- dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ if (dmesg_comp->clock_class) {
+ *msg = bt_message_packet_end_create_with_default_clock_snapshot(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet,
+ dmesg_msg_iter->last_clock_value);
+ } else {
+ *msg = bt_message_packet_end_create(
+ dmesg_msg_iter->pc_msg_iter, dmesg_comp->packet);
+ }
+
dmesg_msg_iter->state = STATE_EMIT_STREAM_ACTIVITY_END;
break;
case STATE_EMIT_STREAM_ACTIVITY_END: