X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=formats%2Fctf-text%2Fctf-text.c;h=a7e7ef6fc117ecde10d9c660c5ba44fc4513997a;hp=e4d7682c0ee27d0d6bac6381c52933f1a9911807;hb=fca049584ae1bcd9b0859924f982c6a0f6c7388f;hpb=41e82e008e6a49f5f9f9d3e7100dacd65676464b diff --git a/formats/ctf-text/ctf-text.c b/formats/ctf-text/ctf-text.c index e4d7682c..a7e7ef6f 100644 --- a/formats/ctf-text/ctf-text.c +++ b/formats/ctf-text/ctf-text.c @@ -158,15 +158,16 @@ void set_field_names_print(struct ctf_text_stream_pos *pos, enum field_item item } static -void ctf_text_print_timestamp(struct ctf_text_stream_pos *pos, - struct ctf_stream *stream) +void ctf_text_print_timestamp(FILE *fp, struct ctf_text_stream_pos *pos, + struct ctf_stream *stream, + uint64_t timestamp) { uint64_t ts_sec = 0, ts_nsec; struct ctf_trace *trace = stream->stream_class->trace; struct trace_collection *tc = trace->collection; struct ctf_clock *clock = tc->single_clock; - ts_nsec = stream->timestamp; + ts_nsec = timestamp; /* Add offsets */ if (!opt_clock_raw && clock) { @@ -210,15 +211,15 @@ void ctf_text_print_timestamp(struct ctf_text_stream_pos *pos, fprintf(stderr, "[warning] Unable to print ascii time.\n"); goto seconds; } - fprintf(pos->fp, "%s", timestr); + fprintf(fp, "%s", timestr); } /* Print time in HH:MM:SS.ns */ - fprintf(pos->fp, "%02d:%02d:%02d.%09" PRIu64, + fprintf(fp, "%02d:%02d:%02d.%09" PRIu64, tm.tm_hour, tm.tm_min, tm.tm_sec, ts_nsec); goto end; } seconds: - fprintf(pos->fp, "%3" PRIu64 ".%09" PRIu64, + fprintf(fp, "%3" PRIu64 ".%09" PRIu64, ts_sec, ts_nsec); end: @@ -256,13 +257,26 @@ int ctf_text_write_event(struct stream_pos *ppos, return -EINVAL; } + /* Print events discarded */ + if (stream->events_discarded) { + fflush(stdout); + fprintf(stderr, "[warning] Tracer discarded %d events between [", + stream->events_discarded); + ctf_text_print_timestamp(stderr, pos, stream, stream->prev_timestamp); + fprintf(stderr, "] and ["); + ctf_text_print_timestamp(stderr, pos, stream, stream->timestamp); + fprintf(stderr, "]. You should consider increasing the buffer size.\n"); + fflush(stderr); + stream->events_discarded = 0; + } + if (stream->has_timestamp) { set_field_names_print(pos, ITEM_HEADER); if (pos->print_names) fprintf(pos->fp, "timestamp = "); else fprintf(pos->fp, "["); - ctf_text_print_timestamp(pos, stream); + ctf_text_print_timestamp(pos->fp, pos, stream, stream->timestamp); if (!pos->print_names) fprintf(pos->fp, "]");