X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt-ring-buffer-metadata-client.h;h=529bbb19ffe72dce2897167b18bfaa781945e516;hb=edb5c2da83545004c5f556accb79d010a6b1e3a9;hp=65509f8475a9d87f2a9279103c9d2f326aa9106f;hpb=b265a505ba25418104f3425e4475f45419844e8a;p=lttng-modules.git diff --git a/ltt-ring-buffer-metadata-client.h b/ltt-ring-buffer-metadata-client.h index 65509f84..529bbb19 100644 --- a/ltt-ring-buffer-metadata-client.h +++ b/ltt-ring-buffer-metadata-client.h @@ -116,7 +116,11 @@ static void client_buffer_end(struct lib_ring_buffer *buf, u64 tsc, header->content_size = data_size * CHAR_BIT; /* in bits */ header->packet_size = PAGE_ALIGN(data_size) * CHAR_BIT; /* in bits */ - records_lost += lib_ring_buffer_get_records_lost_full(&client_config, buf); + /* + * 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); WARN_ON_ONCE(records_lost != 0); @@ -220,6 +224,20 @@ void ltt_event_write(struct lib_ring_buffer_ctx *ctx, const void *src, lib_ring_buffer_write(&client_config, ctx, src, len); } +static +void ltt_event_write_from_user(struct lib_ring_buffer_ctx *ctx, + const void __user *src, size_t len) +{ + lib_ring_buffer_copy_from_user(&client_config, ctx, src, len); +} + +static +void ltt_event_memset(struct lib_ring_buffer_ctx *ctx, + int c, size_t len) +{ + lib_ring_buffer_memset(&client_config, ctx, c, len); +} + static size_t ltt_packet_avail_size(struct channel *chan) @@ -238,9 +256,11 @@ size_t ltt_packet_avail_size(struct channel *chan) } static -wait_queue_head_t *ltt_get_reader_wait_queue(struct channel *chan) +wait_queue_head_t *ltt_get_writer_buf_wait_queue(struct channel *chan, int cpu) { - return &chan->read_wait; + struct lib_ring_buffer *buf = channel_get_ring_buffer(&client_config, + chan, cpu); + return &buf->write_wait; } static @@ -273,9 +293,11 @@ static struct ltt_transport ltt_relay_transport = { .buffer_read_close = ltt_buffer_read_close, .event_reserve = ltt_event_reserve, .event_commit = ltt_event_commit, + .event_write_from_user = ltt_event_write_from_user, + .event_memset = ltt_event_memset, .event_write = ltt_event_write, .packet_avail_size = ltt_packet_avail_size, - .get_reader_wait_queue = ltt_get_reader_wait_queue, + .get_writer_buf_wait_queue = ltt_get_writer_buf_wait_queue, .get_hp_wait_queue = ltt_get_hp_wait_queue, .is_finalized = ltt_is_finalized, .is_disabled = ltt_is_disabled,