X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Fltt-ring-buffer-client.h;h=0e329bad575f40f3d2e107990b57df77a0d6683f;hb=f488575f3420027d33050e779e1e3916e3b91c8c;hp=e041803c34705813e59ab43e0fbe09ca97f34bb1;hpb=e92f3e285939848f248af08f11a39a04a7fcf852;p=lttng-ust.git diff --git a/liblttng-ust/ltt-ring-buffer-client.h b/liblttng-ust/ltt-ring-buffer-client.h index e041803c..0e329bad 100644 --- a/liblttng-ust/ltt-ring-buffer-client.h +++ b/liblttng-ust/ltt-ring-buffer-client.h @@ -24,6 +24,7 @@ #include #include "lttng/bitfield.h" #include "clock.h" +#include "lttng-ust-uuid.h" #include "ltt-tracer.h" #include "../libringbuffer/frontend_types.h" @@ -43,20 +44,20 @@ struct packet_header { * Trace magic number. * contains endianness information. */ - uint8_t uuid[16]; + uint8_t uuid[LTTNG_UST_UUID_LEN]; uint32_t stream_id; struct { /* Stream packet context */ uint64_t timestamp_begin; /* Cycle count at subbuffer start */ uint64_t timestamp_end; /* Cycle count at subbuffer end */ - uint32_t events_discarded; /* + uint64_t content_size; /* Size of data in subbuffer */ + uint64_t packet_size; /* Subbuffer size (include padding) */ + unsigned long events_discarded; /* * Events lost in this subbuffer since * the beginning of the trace. * (may overflow) */ - uint32_t content_size; /* Size of data in subbuffer */ - uint32_t packet_size; /* Subbuffer size (include padding) */ uint32_t cpu_id; /* CPU id associated with stream */ uint8_t header_end; /* End of header */ } ctx; @@ -341,9 +342,9 @@ static void client_buffer_begin(struct lttng_ust_lib_ring_buffer *buf, uint64_t header->stream_id = ltt_chan->id; header->ctx.timestamp_begin = tsc; header->ctx.timestamp_end = 0; + header->ctx.content_size = ~0ULL; /* for debugging */ + header->ctx.packet_size = ~0ULL; header->ctx.events_discarded = 0; - header->ctx.content_size = 0xFFFFFFFF; /* for debugging */ - header->ctx.packet_size = 0xFFFFFFFF; header->ctx.cpu_id = buf->backend.cpu; } @@ -364,13 +365,12 @@ static void client_buffer_end(struct lttng_ust_lib_ring_buffer *buf, uint64_t ts unsigned long records_lost = 0; header->ctx.timestamp_end = tsc; - header->ctx.content_size = data_size * CHAR_BIT; /* in bits */ - header->ctx.packet_size = PAGE_ALIGN(data_size) * CHAR_BIT; /* in bits */ - /* - * We do not care about the records lost count, because the metadata - * channel waits and retry. - */ - (void) lib_ring_buffer_get_records_lost_full(&client_config, buf); + header->ctx.content_size = + (uint64_t) data_size * CHAR_BIT; /* in bits */ + header->ctx.packet_size = + (uint64_t) PAGE_ALIGN(data_size) * CHAR_BIT; /* in bits */ + + records_lost += lib_ring_buffer_get_records_lost_full(&client_config, buf); records_lost += lib_ring_buffer_get_records_lost_wrap(&client_config, buf); records_lost += lib_ring_buffer_get_records_lost_big(&client_config, buf); header->ctx.events_discarded = records_lost;