/* Print events discarded */
if (stream->events_discarded) {
fflush(pos->fp);
- fprintf(stderr, "[warning] Tracer discarded %d events between [",
+ fprintf(stderr, "[warning] Tracer discarded %" PRIu64 " events between [",
stream->events_discarded);
ctf_print_timestamp(stderr, stream, stream->prev_timestamp);
fprintf(stderr, "] and [");
switch (whence) {
case SEEK_CUR:
{
- uint32_t events_discarded_diff;
+ uint64_t events_discarded_diff;
if (pos->offset == EOF) {
return;
struct packet_index,
pos->cur_index - 1);
events_discarded_diff -= packet_index->events_discarded;
+ /*
+ * Deal with 32-bit wrap-around if the
+ * tracer provided a 32-bit field.
+ */
+ if (packet_index->events_discarded_len == 32) {
+ events_discarded_diff = (uint32_t) events_discarded_diff;
+ }
}
file_stream->parent.events_discarded = events_discarded_diff;
file_stream->parent.prev_timestamp = file_stream->parent.timestamp;
*/
if ((&file_stream->parent)->stream_class->trace->collection) {
fflush(stdout);
- fprintf(stderr, "[warning] Tracer discarded %d events at end of stream between [",
+ fprintf(stderr, "[warning] Tracer discarded %" PRIu64 " events at end of stream between [",
file_stream->parent.events_discarded);
ctf_print_timestamp(stderr, &file_stream->parent,
file_stream->parent.prev_timestamp);
field = struct_definition_get_field_from_index(file_stream->parent.stream_packet_context, len_index);
packet_index.events_discarded = get_unsigned_int(field);
+ packet_index.events_discarded_len = get_int_len(field);
}
} else {
/* Use file size for packet size */
struct ctf_clock *current_clock;
/* Event discarded information */
- uint32_t events_discarded;
- uint64_t prev_timestamp; /* Last event */
- uint64_t prev_timestamp_end; /* End-of-packet timestamp */
+ uint64_t events_discarded;
+ uint64_t prev_timestamp; /* Start-of-last-packet timestamp */
+ uint64_t prev_timestamp_end; /* End-of-last-packet timestamp */
};
struct ctf_event_definition {
uint64_t content_size; /* content size, in bits */
uint64_t timestamp_begin;
uint64_t timestamp_end;
- uint32_t events_discarded;
+ uint64_t events_discarded;
+ size_t events_discarded_len; /* length of the field, in bits */
};
/*