X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Ftext%2Fpretty%2Fprint.c;h=87d9950b572ddc190dc2d7796f21f75365b96f80;hb=9b24b6aa4258079f2b59fa156dd3e070969f6f2a;hp=b3afd57387cbb566d08462ed0dea001ae5d0285f;hpb=8e53bed40d8ef5026ccfd0149a8e48e6e220d740;p=babeltrace.git diff --git a/plugins/text/pretty/print.c b/plugins/text/pretty/print.c index b3afd573..87d9950b 100644 --- a/plugins/text/pretty/print.c +++ b/plugins/text/pretty/print.c @@ -78,30 +78,25 @@ void print_field_name_equal(struct pretty_component *pretty, const char *name) static void print_timestamp_cycles(struct pretty_component *pretty, - const bt_event *event) + const bt_clock_snapshot *clock_snapshot, bool update_last) { - const bt_clock_snapshot *clock_snapshot; uint64_t cycles; - bt_clock_snapshot_state cs_state; - - cs_state = bt_event_borrow_default_clock_snapshot_const(event, &clock_snapshot); - if (cs_state != BT_CLOCK_SNAPSHOT_STATE_KNOWN || !clock_snapshot) { - g_string_append(pretty->string, "????????????????????"); - return; - } cycles = bt_clock_snapshot_get_value(clock_snapshot); g_string_append_printf(pretty->string, "%020" PRIu64, cycles); - if (pretty->last_cycles_timestamp != -1ULL) { - pretty->delta_cycles = cycles - pretty->last_cycles_timestamp; + if (update_last) { + if (pretty->last_cycles_timestamp != -1ULL) { + pretty->delta_cycles = cycles - pretty->last_cycles_timestamp; + } + + pretty->last_cycles_timestamp = cycles; } - pretty->last_cycles_timestamp = cycles; } static void print_timestamp_wall(struct pretty_component *pretty, - const bt_clock_snapshot *clock_snapshot) + const bt_clock_snapshot *clock_snapshot, bool update_last) { int ret; int64_t ts_nsec = 0; /* add configurable offset */ @@ -121,11 +116,14 @@ void print_timestamp_wall(struct pretty_component *pretty, return; } - if (pretty->last_real_timestamp != -1ULL) { - pretty->delta_real_timestamp = ts_nsec - pretty->last_real_timestamp; + if (update_last) { + if (pretty->last_real_timestamp != -1ULL) { + pretty->delta_real_timestamp = ts_nsec - pretty->last_real_timestamp; + } + + pretty->last_real_timestamp = ts_nsec; } - pretty->last_real_timestamp = ts_nsec; ts_sec += ts_nsec / NSEC_PER_SEC; ts_nsec = ts_nsec % NSEC_PER_SEC; @@ -216,33 +214,19 @@ end: static int print_event_timestamp(struct pretty_component *pretty, - const bt_event *event, bool *start_line) + const bt_message *event_msg, bool *start_line) { bool print_names = pretty->options.print_header_field_names; int ret = 0; - const bt_stream *stream = NULL; - const bt_stream_class *stream_class = NULL; const bt_clock_snapshot *clock_snapshot = NULL; - bt_clock_snapshot_state cs_state; - stream = bt_event_borrow_stream_const(event); - if (!stream) { - ret = -1; + if (!bt_message_event_borrow_stream_class_default_clock_class_const( + event_msg)) { + /* No default clock class: skip the timestamp without an error */ goto end; } - stream_class = bt_stream_borrow_class_const(stream); - if (!stream_class) { - ret = -1; - goto end; - } - - cs_state = bt_event_borrow_default_clock_snapshot_const(event, - &clock_snapshot); - if (cs_state != BT_CLOCK_SNAPSHOT_STATE_KNOWN || !clock_snapshot) { - /* No default clock value: skip the timestamp without an error */ - goto end; - } + clock_snapshot = bt_message_event_borrow_default_clock_snapshot_const(event_msg); if (print_names) { print_name_equal(pretty, "timestamp"); @@ -253,12 +237,9 @@ int print_event_timestamp(struct pretty_component *pretty, g_string_append(pretty->string, COLOR_TIMESTAMP); } if (pretty->options.print_timestamp_cycles) { - print_timestamp_cycles(pretty, event); + print_timestamp_cycles(pretty, clock_snapshot, true); } else { - clock_snapshot = NULL; - cs_state = bt_event_borrow_default_clock_snapshot_const(event, - &clock_snapshot); - print_timestamp_wall(pretty, clock_snapshot); + print_timestamp_wall(pretty, clock_snapshot, true); } if (pretty->use_colors) { g_string_append(pretty->string, COLOR_RST); @@ -277,7 +258,7 @@ int print_event_timestamp(struct pretty_component *pretty, if (pretty->options.print_timestamp_cycles) { if (pretty->delta_cycles == -1ULL) { g_string_append(pretty->string, - "+??????????\?\?) "); /* Not a trigraph. */ + "+??????????\?\?"); /* Not a trigraph. */ } else { g_string_append_printf(pretty->string, "+%012" PRIu64, pretty->delta_cycles); @@ -308,7 +289,7 @@ end: static int print_event_header(struct pretty_component *pretty, - const bt_event *event) + const bt_message *event_msg) { bool print_names = pretty->options.print_header_field_names; int ret = 0; @@ -318,6 +299,7 @@ int print_event_header(struct pretty_component *pretty, const bt_packet *packet = NULL; const bt_stream *stream = NULL; const bt_trace *trace = NULL; + const bt_event *event = bt_message_event_borrow_event_const(event_msg); int dom_print = 0; bt_property_availability prop_avail; @@ -327,7 +309,7 @@ int print_event_header(struct pretty_component *pretty, packet = bt_event_borrow_packet_const(event); stream = bt_packet_borrow_stream_const(packet); trace = bt_stream_borrow_trace_const(stream); - ret = print_event_timestamp(pretty, event, &pretty->start_line); + ret = print_event_timestamp(pretty, event_msg, &pretty->start_line); if (ret) { goto end; } @@ -345,8 +327,8 @@ int print_event_header(struct pretty_component *pretty, g_string_append(pretty->string, name); - if (!print_names) { - g_string_append(pretty->string, " "); + if (print_names) { + g_string_append(pretty->string, ", "); } } } @@ -427,7 +409,7 @@ int print_event_header(struct pretty_component *pretty, } else if (dom_print) { g_string_append(pretty->string, ":"); } - value = bt_value_integer_get(vpid_value); + value = bt_value_signed_integer_get(vpid_value); g_string_append_printf(pretty->string, "(%" PRId64 ")", value); dom_print = 1; @@ -557,10 +539,10 @@ int print_integer(struct pretty_component *pretty, len = bt_field_class_integer_get_field_value_range(int_fc); g_string_append(pretty->string, "0b"); - v.u = _bt_piecewise_lshift(v.u, 64 - len); + _bt_safe_lshift(v.u, 64 - len); for (bitnr = 0; bitnr < len; bitnr++) { g_string_append_printf(pretty->string, "%u", (v.u & (1ULL << 63)) ? 1 : 0); - v.u = _bt_piecewise_lshift(v.u, 1); + _bt_safe_lshift(v.u, 1); } break; } @@ -735,7 +717,7 @@ int print_enum(struct pretty_component *pretty, for (i = 0; i < label_count; i++) { const char *mapping_name = label_array[i]; - if (i == 0) { + if (i != 0) { g_string_append(pretty->string, ", "); } if (pretty->use_colors) { @@ -786,7 +768,7 @@ int print_struct_field(struct pretty_component *pretty, int ret = 0; const char *field_name; const bt_field *field = NULL; - const bt_field_class *field_class = NULL;; + const bt_field_class_structure_member *member; field = bt_field_structure_borrow_member_field_by_index_const(_struct, i); if (!field) { @@ -794,8 +776,9 @@ int print_struct_field(struct pretty_component *pretty, goto end; } - bt_field_class_structure_borrow_member_by_index_const(struct_class, i, - &field_name, &field_class); + member = bt_field_class_structure_borrow_member_by_index_const( + struct_class, i); + field_name = bt_field_class_structure_member_get_name(member); if (filter_fields && !filter_field_name(pretty, field_name, filter_fields, filter_array_len)) { @@ -832,11 +815,9 @@ int print_struct(struct pretty_component *pretty, ret = -1; goto end; } + nr_fields = bt_field_class_structure_get_member_count(struct_class); - if (nr_fields < 0) { - ret = -1; - goto end; - } + g_string_append(pretty->string, "{"); pretty->depth++; nr_printed_fields = 0; @@ -934,11 +915,6 @@ int print_sequence(struct pretty_component *pretty, uint64_t i; len = bt_field_array_get_length(seq); - if (len < 0) { - ret = -1; - goto end; - } - g_string_append(pretty->string, "["); pretty->depth++; @@ -1180,7 +1156,7 @@ int pretty_print_event(struct pretty_component *pretty, BT_ASSERT(event); pretty->start_line = true; g_string_assign(pretty->string, ""); - ret = print_event_header(pretty, event); + ret = print_event_header(pretty, event_msg); if (ret != 0) { goto end; } @@ -1230,6 +1206,7 @@ int print_discarded_elements_msg(struct pretty_component *pretty, bt_uuid trace_uuid; int64_t stream_class_id; int64_t stream_id; + const char *init_msg; /* Stream name */ stream_name = bt_stream_get_name(stream); @@ -1259,27 +1236,35 @@ int print_discarded_elements_msg(struct pretty_component *pretty, /* Format message */ g_string_assign(pretty->string, ""); + + if (count == UINT64_C(-1)) { + init_msg = "Tracer may have discarded"; + } else { + init_msg = "Tracer discarded"; + } + g_string_append_printf(pretty->string, - "%s%sWARNING%s%s: Tracer discarded ", + "%s%sWARNING%s%s: %s ", bt_common_color_fg_yellow(), bt_common_color_bold(), bt_common_color_reset(), - bt_common_color_fg_yellow()); + bt_common_color_fg_yellow(), init_msg); if (count == UINT64_C(-1)) { - g_string_append_printf(pretty->string, "a number of %ss", - elem_type); + g_string_append_printf(pretty->string, "%ss", elem_type); } else { g_string_append_printf(pretty->string, "%" PRIu64 " %s%s", count, elem_type, count == 1 ? "" : "s"); } + g_string_append_c(pretty->string, ' '); + if (begin_clock_snapshot && end_clock_snapshot) { - g_string_append(pretty->string, " between ["); - print_timestamp_wall(pretty, begin_clock_snapshot); + g_string_append(pretty->string, "between ["); + print_timestamp_wall(pretty, begin_clock_snapshot, false); g_string_append(pretty->string, "] and ["); - print_timestamp_wall(pretty, end_clock_snapshot); + print_timestamp_wall(pretty, end_clock_snapshot, false); g_string_append(pretty->string, "]"); } else { g_string_append(pretty->string, "(unknown time range)"); @@ -1374,23 +1359,29 @@ int pretty_print_discarded_items(struct pretty_component *pretty, BT_ASSERT(stream); stream_class = bt_stream_borrow_class_const(stream); - if (bt_stream_class_borrow_default_clock_class_const(stream_class)) { - switch (bt_message_get_type(msg)) { - case BT_MESSAGE_TYPE_DISCARDED_EVENTS: - bt_message_discarded_events_borrow_default_beginning_clock_snapshot_const( - msg, &begin); - bt_message_discarded_events_borrow_default_end_clock_snapshot_const( - msg, &end); - break; - case BT_MESSAGE_TYPE_DISCARDED_PACKETS: - bt_message_discarded_packets_borrow_default_beginning_clock_snapshot_const( - msg, &begin); - bt_message_discarded_packets_borrow_default_end_clock_snapshot_const( - msg, &end); - break; - default: - abort(); + switch (bt_message_get_type(msg)) { + case BT_MESSAGE_TYPE_DISCARDED_EVENTS: + if (bt_stream_class_discarded_events_have_default_clock_snapshots( + stream_class)) { + begin = bt_message_discarded_events_borrow_beginning_default_clock_snapshot_const( + msg); + end = bt_message_discarded_events_borrow_end_default_clock_snapshot_const( + msg); + } + + break; + case BT_MESSAGE_TYPE_DISCARDED_PACKETS: + if (bt_stream_class_discarded_packets_have_default_clock_snapshots( + stream_class)) { + begin = bt_message_discarded_packets_borrow_beginning_default_clock_snapshot_const( + msg); + end = bt_message_discarded_packets_borrow_end_default_clock_snapshot_const( + msg); } + + break; + default: + abort(); } print_discarded_elements_msg(pretty, stream, begin, end,