From 27f26617ac7490642cd6fc5fe6931dac16c5b3ac Mon Sep 17 00:00:00 2001 From: Francis Deslauriers Date: Fri, 14 Jun 2019 09:44:41 -0400 Subject: [PATCH] ctf: msg-iter: add event timestamp accessors 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 Change-Id: I18736151fd8367fb33c6b46d81a860f54432ad55 Reviewed-on: https://review.lttng.org/c/babeltrace/+/1432 Tested-by: jenkins Reviewed-by: Philippe Proulx --- src/plugins/ctf/common/msg-iter/msg-iter.c | 41 ++++++++++++++++++++-- src/plugins/ctf/common/msg-iter/msg-iter.h | 8 +++++ 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/plugins/ctf/common/msg-iter/msg-iter.c b/src/plugins/ctf/common/msg-iter/msg-iter.c index 4d99d814..124a69d5 100644 --- a/src/plugins/ctf/common/msg-iter/msg-iter.c +++ b/src/plugins/ctf/common/msg-iter/msg-iter.c @@ -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, diff --git a/src/plugins/ctf/common/msg-iter/msg-iter.h b/src/plugins/ctf/common/msg-iter/msg-iter.h index 7677f770..e00123b3 100644 --- a/src/plugins/ctf/common/msg-iter/msg-iter.h +++ b/src/plugins/ctf/common/msg-iter/msg-iter.h @@ -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); -- 2.34.1