X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Flttng-ring-buffer-metadata-client.h;h=86ec78f16abf7af75bc0ed9a3fae5ce66f64766b;hb=HEAD;hp=6c7f64c244cd6a241cdf9611a37eb8ae0b3923de;hpb=e20c0fec4a2e120143f2e71c63d9fcd664af55a4;p=lttng-modules.git diff --git a/src/lttng-ring-buffer-metadata-client.h b/src/lttng-ring-buffer-metadata-client.h index 6c7f64c2..d5e7c742 100644 --- a/src/lttng-ring-buffer-metadata-client.h +++ b/src/lttng-ring-buffer-metadata-client.h @@ -81,7 +81,7 @@ static size_t client_packet_header_size(void) return offsetof(struct metadata_packet_header, header_end); } -static void client_buffer_begin(struct lttng_kernel_ring_buffer *buf, u64 tsc, +static void client_buffer_begin(struct lttng_kernel_ring_buffer *buf, u64 timestamp, unsigned int subbuf_idx) { struct lttng_kernel_ring_buffer_channel *chan = buf->backend.chan; @@ -109,8 +109,9 @@ static void client_buffer_begin(struct lttng_kernel_ring_buffer *buf, u64 tsc, * offset is assumed to never be 0 here : never deliver a completely empty * subbuffer. data_size is between 1 and subbuf_size. */ -static void client_buffer_end(struct lttng_kernel_ring_buffer *buf, u64 tsc, - unsigned int subbuf_idx, unsigned long data_size) +static void client_buffer_end(struct lttng_kernel_ring_buffer *buf, u64 timestamp, + unsigned int subbuf_idx, unsigned long data_size, + const struct lttng_kernel_ring_buffer_ctx *ctx) { struct lttng_kernel_ring_buffer_channel *chan = buf->backend.chan; struct metadata_packet_header *header = @@ -125,9 +126,9 @@ static void client_buffer_end(struct lttng_kernel_ring_buffer *buf, u64 tsc, * 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); - records_lost += lib_ring_buffer_get_records_lost_wrap(&client_config, buf); - records_lost += lib_ring_buffer_get_records_lost_big(&client_config, buf); + (void) lib_ring_buffer_get_records_lost_full(&client_config, ctx); + records_lost += lib_ring_buffer_get_records_lost_wrap(&client_config, ctx); + records_lost += lib_ring_buffer_get_records_lost_big(&client_config, ctx); WARN_ON_ONCE(records_lost != 0); } @@ -213,7 +214,7 @@ static const struct lttng_kernel_ring_buffer_config client_config = { .cb.buffer_create = client_buffer_create, .cb.buffer_finalize = client_buffer_finalize, - .tsc_bits = 0, + .timestamp_bits = 0, .alloc = RING_BUFFER_ALLOC_GLOBAL, .sync = RING_BUFFER_SYNC_GLOBAL, .mode = RING_BUFFER_MODE_TEMPLATE, @@ -326,15 +327,17 @@ void lttng_event_commit(struct lttng_kernel_ring_buffer_ctx *ctx) static void lttng_event_write(struct lttng_kernel_ring_buffer_ctx *ctx, const void *src, - size_t len) + size_t len, size_t alignment) { + lib_ring_buffer_align_ctx(ctx, alignment); lib_ring_buffer_write(&client_config, ctx, src, len); } static void lttng_event_write_from_user(struct lttng_kernel_ring_buffer_ctx *ctx, - const void __user *src, size_t len) + const void __user *src, size_t len, size_t alignment) { + lib_ring_buffer_align_ctx(ctx, alignment); lib_ring_buffer_copy_from_user_inatomic(&client_config, ctx, src, len); } @@ -352,6 +355,13 @@ void lttng_event_strcpy(struct lttng_kernel_ring_buffer_ctx *ctx, const char *sr lib_ring_buffer_strcpy(&client_config, ctx, src, len, '#'); } +static +void lttng_event_pstrcpy_pad(struct lttng_kernel_ring_buffer_ctx *ctx, const char *src, + size_t len) +{ + lib_ring_buffer_pstrcpy(&client_config, ctx, src, len, '\0'); +} + static size_t lttng_packet_avail_size(struct lttng_kernel_ring_buffer_channel *chan) { @@ -427,6 +437,7 @@ static struct lttng_transport lttng_relay_transport = { .event_memset = lttng_event_memset, .event_write = lttng_event_write, .event_strcpy = lttng_event_strcpy, + .event_pstrcpy_pad = lttng_event_pstrcpy_pad, }, };