ctf: msg-iter: add event timestamp accessors
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 14 Jun 2019 13:44:41 +0000 (09:44 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 16 Aug 2019 15:35:50 +0000 (11:35 -0400)
Adds functions to extract the timestamp of the first and last event of
the current packet.
  BT_HIDDEN
  enum bt_msg_iter_status bt_msg_iter_first_event_clock_snapshot(
         struct bt_msg_iter *notit, uint64_t *first_event_cs);

  BT_HIDDEN
  enum bt_msg_iter_status bt_msg_iter_last_event_clock_snapshot(
         struct bt_msg_iter *notit, uint64_t *last_event_cs);

Those functions use the `decode_until_state()` function to decode the
current packet until one of two specific states and then used the clock
value of the default clock class.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: I18736151fd8367fb33c6b46d81a860f54432ad55
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1432
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/plugins/ctf/common/msg-iter/msg-iter.c
src/plugins/ctf/common/msg-iter/msg-iter.h

index 4d99d8145fe5a9a164fabef40f67a8bbba70a8bb..124a69d531484210bf0a5532cda24611bca253ab 100644 (file)
@@ -2851,9 +2851,8 @@ end:
 }
 
 static
-enum bt_msg_iter_status decode_until_state(
-               struct bt_msg_iter *notit, enum state target_state_1,
-               enum state target_state_2)
+enum bt_msg_iter_status decode_until_state( struct bt_msg_iter *notit,
+               enum state target_state_1, enum state target_state_2)
 {
        enum bt_msg_iter_status status = BT_MSG_ITER_STATUS_OK;
 
@@ -2994,6 +2993,42 @@ end:
        return ret;
 }
 
+static
+enum bt_msg_iter_status clock_snapshot_at_msg_iter_state(
+               struct bt_msg_iter *notit, enum state target_state_1,
+               enum state target_state_2, uint64_t *clock_snapshot)
+{
+       enum bt_msg_iter_status status = BT_MSG_ITER_STATUS_OK;
+
+       BT_ASSERT(notit);
+       BT_ASSERT(clock_snapshot);
+       status = decode_until_state(notit, target_state_1, target_state_2);
+       if (status != BT_MSG_ITER_STATUS_OK) {
+               goto end;
+       }
+
+       *clock_snapshot = notit->default_clock_snapshot;
+end:
+       return status;
+}
+
+BT_HIDDEN
+enum bt_msg_iter_status bt_msg_iter_curr_packet_first_event_clock_snapshot(
+               struct bt_msg_iter *notit, uint64_t *first_clock_snapshot)
+{
+       return clock_snapshot_at_msg_iter_state(notit,
+               STATE_AFTER_EVENT_HEADER, -1, first_clock_snapshot);
+}
+
+BT_HIDDEN
+enum bt_msg_iter_status bt_msg_iter_curr_packet_last_event_clock_snapshot(
+               struct bt_msg_iter *notit, uint64_t *last_clock_snapshot)
+{
+       return clock_snapshot_at_msg_iter_state(notit,
+               STATE_EMIT_MSG_PACKET_END_SINGLE,
+               STATE_EMIT_MSG_PACKET_END_MULTI, last_clock_snapshot);
+}
+
 BT_HIDDEN
 enum bt_msg_iter_status bt_msg_iter_get_packet_properties(
                struct bt_msg_iter *notit,
index 7677f770cd2ca6facb98dece2056644de1e330f8..e00123b3879e9957d41319693db701a1756f9ee7 100644 (file)
@@ -308,6 +308,14 @@ enum bt_msg_iter_status bt_msg_iter_get_packet_properties(
                struct bt_msg_iter *notit,
                struct bt_msg_iter_packet_properties *props);
 
+BT_HIDDEN
+enum bt_msg_iter_status bt_msg_iter_curr_packet_first_event_clock_snapshot(
+               struct bt_msg_iter *notit, uint64_t *first_event_cs);
+
+BT_HIDDEN
+enum bt_msg_iter_status bt_msg_iter_curr_packet_last_event_clock_snapshot(
+               struct bt_msg_iter *notit, uint64_t *last_event_cs);
+
 BT_HIDDEN
 void bt_msg_iter_set_medops_data(struct bt_msg_iter *notit,
                void *medops_data);
This page took 0.027037 seconds and 4 git commands to generate.