projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: kernel consumer: signal metadata ready condition variable
[lttng-tools.git]
/
src
/
common
/
kernel-consumer
/
kernel-consumer.c
diff --git
a/src/common/kernel-consumer/kernel-consumer.c
b/src/common/kernel-consumer/kernel-consumer.c
index 32f55f0b736d1cc59ffd47ee7ff395e926a02bb5..c0d8e09720b1c3409fda2fb315f1b79d8ca98068 100644
(file)
--- a/
src/common/kernel-consumer/kernel-consumer.c
+++ b/
src/common/kernel-consumer/kernel-consumer.c
@@
-1647,6
+1647,14
@@
bool is_get_next_check_metadata_available(int tracer_fd)
return available;
}
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)
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;
}
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) {
}
if (!stream->read_subbuffer_ops.get_next_subbuffer) {
This page took
0.024191 seconds
and
4
git commands to generate.