lib: rename clock class's absolute property to "origin is Unix epoch"
[babeltrace.git] / plugins / text / dmesg / dmesg.c
index d73d2abe69c537b4896453887f9b468d1a12c187..914ae06361e6db2a583a6c90deb4a88b4d21e5f9 100644 (file)
@@ -147,6 +147,13 @@ int create_meta(struct dmesg_component *dmesg_comp, bool has_ts)
                        goto error;
                }
 
+               /*
+                * The `dmesg` timestamp's origin is not the Unix epoch,
+                * it's the boot time.
+                */
+               bt_clock_class_set_origin_is_unix_epoch(dmesg_comp->clock_class,
+                       BT_FALSE);
+
                ret = bt_stream_class_set_default_clock_class(
                        dmesg_comp->stream_class, dmesg_comp->clock_class);
                if (ret) {
@@ -516,8 +523,16 @@ skip_ts:
                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;
@@ -525,12 +540,6 @@ skip_ts:
 
        event = bt_message_event_borrow_event(msg);
        BT_ASSERT(event);
-
-       if (dmesg_comp->clock_class) {
-               bt_event_set_default_clock_snapshot(event, ts);
-               msg_iter->last_clock_value = ts;
-       }
-
        goto end;
 
 error:
@@ -638,6 +647,8 @@ void destroy_dmesg_msg_iter(struct dmesg_msg_iter *dmesg_msg_iter)
        g_free(dmesg_msg_iter);
 }
 
+
+
 BT_HIDDEN
 bt_self_message_iterator_status dmesg_msg_iter_init(
                bt_self_message_iterator *self_msg_iter,
@@ -888,3 +899,29 @@ bt_self_message_iterator_status dmesg_msg_iter_next(
 
        return status;
 }
+
+BT_HIDDEN
+bt_bool dmesg_msg_iter_can_seek_beginning(
+               bt_self_message_iterator *self_msg_iter)
+{
+       struct dmesg_msg_iter *dmesg_msg_iter =
+               bt_self_message_iterator_get_data(self_msg_iter);
+
+       /* Can't seek the beginning of the standard input stream */
+       return !dmesg_msg_iter->dmesg_comp->params.read_from_stdin;
+}
+
+BT_HIDDEN
+bt_self_message_iterator_status dmesg_msg_iter_seek_beginning(
+               bt_self_message_iterator *self_msg_iter)
+{
+       struct dmesg_msg_iter *dmesg_msg_iter =
+               bt_self_message_iterator_get_data(self_msg_iter);
+
+       BT_ASSERT(!dmesg_msg_iter->dmesg_comp->params.read_from_stdin);
+
+       BT_MESSAGE_PUT_REF_AND_RESET(dmesg_msg_iter->tmp_event_msg);
+       dmesg_msg_iter->last_clock_value = 0;
+       dmesg_msg_iter->state = STATE_EMIT_STREAM_BEGINNING;
+       return BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+}
This page took 0.023746 seconds and 4 git commands to generate.