Fix: kernel consumer: signal metadata ready condition variable
[lttng-tools.git] / src / common / kernel-consumer / kernel-consumer.c
index 32f55f0b736d1cc59ffd47ee7ff395e926a02bb5..c0d8e09720b1c3409fda2fb315f1b79d8ca98068 100644 (file)
@@ -1647,6 +1647,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)
@@ -1677,6 +1685,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) {
This page took 0.024128 seconds and 5 git commands to generate.