X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=plugins%2Fctf%2Ffs-sink%2Ffs-sink-stream.c;h=edf8dd034c1da73d9ee055d2ef6f83f59747d657;hb=68b66a256a54d32992dfefeaad11eea88b7df234;hp=b0b514a54be050c6a1dde158aec685f939638dba;hpb=15fe47e0499a9805421da82a25c026f3eb359eaa;p=babeltrace.git diff --git a/plugins/ctf/fs-sink/fs-sink-stream.c b/plugins/ctf/fs-sink/fs-sink-stream.c index b0b514a5..edf8dd03 100644 --- a/plugins/ctf/fs-sink/fs-sink-stream.c +++ b/plugins/ctf/fs-sink/fs-sink-stream.c @@ -23,13 +23,13 @@ #define BT_LOG_TAG "PLUGIN-CTF-FS-SINK-STREAM" #include "logging.h" -#include +#include #include #include #include -#include -#include -#include +#include +#include +#include #include "fs-sink-trace.h" #include "fs-sink-stream.h" @@ -119,8 +119,7 @@ GString *make_unique_stream_file_name(struct fs_sink_trace *trace, while (stream_file_name_exists(trace, name->str) && strcmp(name->str, "metadata") == 0) { - g_string_assign(name, san_base->str); - g_string_append_printf(name, "%u", suffix); + g_string_printf(name, "%s-%u", san_base->str, suffix); suffix++; } @@ -223,7 +222,7 @@ int write_float_field(struct fs_sink_stream *stream, ret = bt_ctfser_write_float32(&stream->ctfser, val, fc->base.base.alignment, BYTE_ORDER); } else { - ret = bt_ctfser_write_float32(&stream->ctfser, val, + ret = bt_ctfser_write_float64(&stream->ctfser, val, fc->base.base.alignment, BYTE_ORDER); } @@ -475,14 +474,16 @@ int write_packet_context(struct fs_sink_stream *stream) goto end; } - if (stream->sc->default_clock_class) { + if (stream->sc->packets_have_ts_begin) { /* Beginning time */ ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, stream->packet_state.beginning_cs, 8, 64, BYTE_ORDER); if (ret) { goto end; } + } + if (stream->sc->packets_have_ts_end) { /* End time */ ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, stream->packet_state.end_cs, 8, 64, BYTE_ORDER); @@ -491,12 +492,14 @@ int write_packet_context(struct fs_sink_stream *stream) } } - /* Discarded event counter */ - ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, - stream->packet_state.discarded_events_counter, 8, 64, - BYTE_ORDER); - if (ret) { - goto end; + if (stream->sc->has_discarded_events) { + /* Discarded event counter */ + ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, + stream->packet_state.discarded_events_counter, 8, 64, + BYTE_ORDER); + if (ret) { + goto end; + } } /* Sequence number */ @@ -549,22 +552,46 @@ int fs_sink_stream_open_packet(struct fs_sink_stream *stream, } /* Packet header: magic */ - bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, + ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, UINT64_C(0xc1fc1fc1), 8, 32, BYTE_ORDER); + if (ret) { + BT_LOGE("Error writing packet header magic: stream-file-name=%s", + stream->file_name->str); + goto end; + } /* Packet header: UUID */ for (i = 0; i < BABELTRACE_UUID_LEN; i++) { - bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, + ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, (uint64_t) stream->sc->tc->uuid[i], 8, 8, BYTE_ORDER); + if (ret) { + BT_LOGE("Error writing packet header UUID: stream-file-name=%s", + stream->file_name->str); + goto end; + } } /* Packet header: stream class ID */ - bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, + ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, bt_stream_class_get_id(stream->sc->ir_sc), 8, 64, BYTE_ORDER); + if (ret) { + BT_LOGE("Error writing packet header stream class id: " + "stream-file-name=%s, stream-class-id=%"PRIu64, + stream->file_name->str, + bt_stream_class_get_id(stream->sc->ir_sc)); + goto end; + } /* Packet header: stream ID */ - bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, + ret = bt_ctfser_write_byte_aligned_unsigned_int(&stream->ctfser, bt_stream_get_id(stream->ir_stream), 8, 64, BYTE_ORDER); + if (ret) { + BT_LOGE("Error writing packet header stream id: " + "stream-file-name=%s, stream-id=%"PRIu64, + stream->file_name->str, + bt_stream_get_id(stream->ir_stream)); + goto end; + } /* Save packet context's offset to rewrite it later */ stream->packet_state.context_offset_bits =