X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fkernel-consumer%2Fkernel-consumer.c;h=819dbf20ae80b435885f6ec6320e8e05777d95a7;hb=1bfbabab0171e4243edbf1d7e9e9b6c11f549460;hp=bcdf2c02f953768b96c5347ca7e4421fe669c8e0;hpb=852a753fee8c0d561a41b99ed98ae1a123a0f899;p=lttng-tools.git diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c index bcdf2c02f..819dbf20a 100644 --- a/src/common/kernel-consumer/kernel-consumer.c +++ b/src/common/kernel-consumer/kernel-consumer.c @@ -1622,6 +1622,14 @@ bool is_get_next_check_metadata_available(int tracer_fd) return available; } +static +int signal_metadata(struct lttng_consumer_stream *stream, + struct lttng_consumer_local_data *ctx) +{ + ASSERT_LOCKED(stream->metadata_rdv_lock); + return pthread_cond_broadcast(&stream->metadata_rdv) ? -errno : 0; +} + static int lttng_kconsumer_set_stream_ops( struct lttng_consumer_stream *stream) @@ -1652,6 +1660,8 @@ int lttng_kconsumer_set_stream_ops( metadata_bucket_destroy(stream->metadata_bucket); stream->metadata_bucket = NULL; } + + stream->read_subbuffer_ops.on_sleep = signal_metadata; } if (!stream->read_subbuffer_ops.get_next_subbuffer) {