From 749d339a40b5cbc547e94feb798382eea797bae2 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 6 Mar 2013 16:12:57 -0500 Subject: [PATCH] Add channel wakeup fd to monitor close Add channel wakeup fd, so consumer can keep its handle on the stream wakeup_fd (for periodic timer flush), and yet still discover that an application has closed a channel or exited. Requires to be updated in locked-step with lttng-ust "Add channel wakeup fd to monitor close" Signed-off-by: Mathieu Desnoyers Signed-off-by: David Goulet --- src/bin/lttng-sessiond/lttng-ust-ctl.h | 11 ++++++++--- src/common/ust-consumer/ust-consumer.c | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bin/lttng-sessiond/lttng-ust-ctl.h b/src/bin/lttng-sessiond/lttng-ust-ctl.h index cd833b826..7dd36a93c 100644 --- a/src/bin/lttng-sessiond/lttng-ust-ctl.h +++ b/src/bin/lttng-sessiond/lttng-ust-ctl.h @@ -136,13 +136,21 @@ void ustctl_destroy_channel(struct ustctl_consumer_channel *chan); int ustctl_send_channel_to_sessiond(int sock, struct ustctl_consumer_channel *channel); +int ustctl_channel_close_wait_fd(struct ustctl_consumer_channel *consumer_chan); +int ustctl_channel_close_wakeup_fd(struct ustctl_consumer_channel *consumer_chan); +int ustctl_channel_get_wait_fd(struct ustctl_consumer_channel *consumer_chan); +int ustctl_channel_get_wakeup_fd(struct ustctl_consumer_channel *consumer_chan); + /* * Send a NULL stream to finish iteration over all streams of a given * channel. */ int ustctl_send_stream_to_sessiond(int sock, struct ustctl_consumer_stream *stream); +int ustctl_stream_close_wait_fd(struct ustctl_consumer_stream *stream); int ustctl_stream_close_wakeup_fd(struct ustctl_consumer_stream *stream); +int ustctl_stream_get_wait_fd(struct ustctl_consumer_stream *stream); +int ustctl_stream_get_wakeup_fd(struct ustctl_consumer_stream *stream); /* Create/destroy stream buffers for read */ struct ustctl_consumer_stream * @@ -150,9 +158,6 @@ struct ustctl_consumer_stream * int cpu); void ustctl_destroy_stream(struct ustctl_consumer_stream *stream); -int ustctl_get_wait_fd(struct ustctl_consumer_stream *stream); -int ustctl_get_wakeup_fd(struct ustctl_consumer_stream *stream); - /* For mmap mode, readable without "get" operation */ int ustctl_get_mmap_len(struct ustctl_consumer_stream *stream, unsigned long *len); diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c index a6a4f1a91..5d9dc96c7 100644 --- a/src/common/ust-consumer/ust-consumer.c +++ b/src/common/ust-consumer/ust-consumer.c @@ -256,7 +256,7 @@ static int create_ust_streams(struct lttng_consumer_channel *channel, while ((ustream = ustctl_create_stream(channel->uchan, cpu))) { int wait_fd; - wait_fd = ustctl_get_wait_fd(ustream); + wait_fd = ustctl_stream_get_wait_fd(ustream); /* Allocate consumer stream object. */ stream = allocate_stream(cpu, wait_fd, channel, ctx, &ret); -- 2.34.1