From d9f65f09bceeaa3dca4270986b4b05347be54d00 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Thu, 6 Apr 2017 16:43:26 -0400 Subject: [PATCH] text.pretty: use clock class with highest priority to print the timestamp MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Also, if there's no clock class in the event notification's clock class priority map, then do not print any timestamp. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- plugins/text/pretty/Makefile.am | 2 -- plugins/text/pretty/pretty.c | 11 +---------- plugins/text/pretty/pretty.h | 3 +-- plugins/text/pretty/print.c | 34 +++++++++++++++++++++++++++------ 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/plugins/text/pretty/Makefile.am b/plugins/text/pretty/Makefile.am index badc92a9..1cb89a2f 100644 --- a/plugins/text/pretty/Makefile.am +++ b/plugins/text/pretty/Makefile.am @@ -1,7 +1,5 @@ AM_CFLAGS = $(PACKAGE_CFLAGS) -I$(top_srcdir)/include -I$(top_srcdir)/plugins -SUBDIRS = . - noinst_LTLIBRARIES = libbabeltrace-plugin-text-pretty-cc.la # ctf-text plugin diff --git a/plugins/text/pretty/pretty.c b/plugins/text/pretty/pretty.c index 14f8560c..cbc2feba 100644 --- a/plugins/text/pretty/pretty.c +++ b/plugins/text/pretty/pretty.c @@ -144,15 +144,7 @@ enum bt_component_status handle_notification(struct pretty_component *pretty, break; case BT_NOTIFICATION_TYPE_EVENT: { - struct bt_ctf_event *event = bt_notification_event_get_event( - notification); - - if (!event) { - ret = BT_COMPONENT_STATUS_ERROR; - goto end; - } - ret = pretty_print_event(pretty, event); - bt_put(event); + ret = pretty_print_event(pretty, notification); if (ret != BT_COMPONENT_STATUS_OK) { goto end; } @@ -224,7 +216,6 @@ enum bt_component_status pretty_consume(struct bt_private_component *component) notification = bt_notification_iterator_get_notification(it); assert(notification); ret = handle_notification(pretty, notification); - pretty->processed_first_event = true; end: bt_put(notification); return ret; diff --git a/plugins/text/pretty/pretty.h b/plugins/text/pretty/pretty.h index 9caa5778..0c8b27d9 100644 --- a/plugins/text/pretty/pretty.h +++ b/plugins/text/pretty/pretty.h @@ -82,7 +82,6 @@ struct pretty_component { struct pretty_options options; struct bt_notification_iterator *input_iterator; FILE *out, *err; - bool processed_first_event; /* Should be per-iterator. */ int depth; /* nesting, used for tabulation alignment. */ bool start_line; GString *string; @@ -129,6 +128,6 @@ void pretty_finalize(struct bt_private_component *component); BT_HIDDEN enum bt_component_status pretty_print_event(struct pretty_component *pretty, - struct bt_ctf_event *event); + struct bt_notification *event_notif); #endif /* BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H */ diff --git a/plugins/text/pretty/print.c b/plugins/text/pretty/print.c index 77c42a08..fb7bae4f 100644 --- a/plugins/text/pretty/print.c +++ b/plugins/text/pretty/print.c @@ -36,6 +36,8 @@ #include #include #include +#include +#include #include #include #include @@ -234,7 +236,9 @@ end: static enum bt_component_status print_event_timestamp(struct pretty_component *pretty, - struct bt_ctf_event *event, bool *start_line) + struct bt_ctf_event *event, + struct bt_clock_class_priority_map *cc_prio_map, + bool *start_line) { bool print_names = pretty->options.print_header_field_names; enum bt_component_status ret = BT_COMPONENT_STATUS_OK; @@ -260,7 +264,15 @@ enum bt_component_status print_event_timestamp(struct pretty_component *pretty, ret = BT_COMPONENT_STATUS_ERROR; goto end; } - clock_class = bt_ctf_trace_get_clock_class(trace, 0); + + if (bt_clock_class_priority_map_get_clock_class_count(cc_prio_map) == 0) { + /* No clock class: skip the timestamp without an error */ + goto end; + } + + clock_class = + bt_clock_class_priority_map_get_highest_priority_clock_class( + cc_prio_map); if (!clock_class) { ret = BT_COMPONENT_STATUS_ERROR; goto end; @@ -328,7 +340,8 @@ end: static enum bt_component_status print_event_header(struct pretty_component *pretty, - struct bt_ctf_event *event) + struct bt_ctf_event *event, + struct bt_clock_class_priority_map *cc_prio_map) { bool print_names = pretty->options.print_header_field_names; enum bt_component_status ret = BT_COMPONENT_STATUS_OK; @@ -352,7 +365,8 @@ enum bt_component_status print_event_header(struct pretty_component *pretty, ret = BT_COMPONENT_STATUS_ERROR; goto end; } - ret = print_event_timestamp(pretty, event, &pretty->start_line); + ret = print_event_timestamp(pretty, event, cc_prio_map, + &pretty->start_line); if (ret != BT_COMPONENT_STATUS_OK) { goto end; } @@ -1446,12 +1460,18 @@ end: BT_HIDDEN enum bt_component_status pretty_print_event(struct pretty_component *pretty, - struct bt_ctf_event *event) + struct bt_notification *event_notif) { enum bt_component_status ret; + struct bt_ctf_event *event = + bt_notification_event_get_event(event_notif); + struct bt_clock_class_priority_map *cc_prio_map = + bt_notification_event_get_clock_class_priority_map(event_notif); + assert(event); + assert(cc_prio_map); pretty->start_line = true; - ret = print_event_header(pretty, event); + ret = print_event_header(pretty, event, cc_prio_map); if (ret != BT_COMPONENT_STATUS_OK) { goto end; } @@ -1485,5 +1505,7 @@ enum bt_component_status pretty_print_event(struct pretty_component *pretty, fputc('\n', pretty->out); end: + bt_put(event); + bt_put(cc_prio_map); return ret; } -- 2.34.1