X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=ltt-ring-buffer-metadata-client.h;h=06936aaa93cef7b12f28931d71767ded09dbff36;hb=a3a8ea221c9674f6a30b75aee373c95c0556d769;hp=136af200c5bdc889c7ce72403e0a64e70d9d1b9d;hpb=64c796d8aec1efa5d6f0d5850d2a0095cb7842e3;p=lttng-modules.git diff --git a/ltt-ring-buffer-metadata-client.h b/ltt-ring-buffer-metadata-client.h index 136af200..06936aaa 100644 --- a/ltt-ring-buffer-metadata-client.h +++ b/ltt-ring-buffer-metadata-client.h @@ -57,9 +57,7 @@ static u64 client_ring_buffer_clock_read(struct channel *chan) static size_t client_record_header_size(const struct lib_ring_buffer_config *config, struct channel *chan, size_t offset, - size_t data_size, size_t *pre_header_padding, - unsigned int rflags, struct lib_ring_buffer_ctx *ctx) { return 0; @@ -144,7 +142,7 @@ static const struct lib_ring_buffer_config client_config = { .sync = RING_BUFFER_SYNC_GLOBAL, .mode = RING_BUFFER_MODE_TEMPLATE, .backend = RING_BUFFER_PAGE, - .output = RING_BUFFER_SPLICE, + .output = RING_BUFFER_OUTPUT_TEMPLATE, .oops = RING_BUFFER_OOPS_CONSISTENCY, .ipi = RING_BUFFER_IPI_BARRIER, .wakeup = RING_BUFFER_WAKEUP_BY_TIMER, @@ -179,6 +177,20 @@ struct lib_ring_buffer *ltt_buffer_read_open(struct channel *chan) return NULL; } +static +int ltt_buffer_has_read_closed_stream(struct channel *chan) +{ + struct lib_ring_buffer *buf; + int cpu; + + for_each_channel_cpu(cpu, chan) { + buf = channel_get_ring_buffer(&client_config, chan, cpu); + if (!atomic_long_read(&buf->active_readers)) + return 1; + } + return 0; +} + static void ltt_buffer_read_close(struct lib_ring_buffer *buf) { @@ -222,9 +234,27 @@ size_t ltt_packet_avail_size(struct channel *chan) } static -wait_queue_head_t *ltt_get_reader_wait_queue(struct ltt_channel *chan) +wait_queue_head_t *ltt_get_reader_wait_queue(struct channel *chan) +{ + return &chan->read_wait; +} + +static +wait_queue_head_t *ltt_get_hp_wait_queue(struct channel *chan) +{ + return &chan->hp_wait; +} + +static +int ltt_is_finalized(struct channel *chan) +{ + return lib_ring_buffer_channel_is_finalized(chan); +} + +static +int ltt_is_disabled(struct channel *chan) { - return &chan->chan->read_wait; + return lib_ring_buffer_channel_is_disabled(chan); } static struct ltt_transport ltt_relay_transport = { @@ -234,12 +264,17 @@ static struct ltt_transport ltt_relay_transport = { .channel_create = _channel_create, .channel_destroy = ltt_channel_destroy, .buffer_read_open = ltt_buffer_read_open, + .buffer_has_read_closed_stream = + ltt_buffer_has_read_closed_stream, .buffer_read_close = ltt_buffer_read_close, .event_reserve = ltt_event_reserve, .event_commit = ltt_event_commit, .event_write = ltt_event_write, .packet_avail_size = ltt_packet_avail_size, .get_reader_wait_queue = ltt_get_reader_wait_queue, + .get_hp_wait_queue = ltt_get_hp_wait_queue, + .is_finalized = ltt_is_finalized, + .is_disabled = ltt_is_disabled, }, }; @@ -250,7 +285,6 @@ static int __init ltt_ring_buffer_client_init(void) * vmalloc'd module pages when it is built as a module into LTTng. */ wrapper_vmalloc_sync_all(); - printk(KERN_INFO "LTT : ltt ring buffer metadata client init\n"); ltt_transport_register(<t_relay_transport); return 0; } @@ -259,7 +293,6 @@ module_init(ltt_ring_buffer_client_init); static void __exit ltt_ring_buffer_client_exit(void) { - printk(KERN_INFO "LTT : ltt ring buffer metadata client exit\n"); ltt_transport_unregister(<t_relay_transport); }