why isn't this patch using lttng_pipe_read() ? * David Goulet ([email protected]) wrote: > Signed-off-by: David Goulet <[email protected]> > --- > src/common/consumer.c | 42 > ++++++++------------------ > src/common/consumer.h | 2 +- > src/common/kernel-consumer/kernel-consumer.c | 2 +- > src/common/ust-consumer/ust-consumer.c | 2 +- > 4 files changed, 15 insertions(+), 33 deletions(-) > > diff --git a/src/common/consumer.c b/src/common/consumer.c > index bd618dd..ef35927 100644 > --- a/src/common/consumer.c > +++ b/src/common/consumer.c > @@ -77,21 +77,6 @@ static struct lttng_ht *metadata_ht; > static struct lttng_ht *data_ht; > > /* > - * Notify a thread pipe to poll back again. This usually means that some > global > - * state has changed so we just send back the thread in a poll wait call. > - */ > -static void notify_thread_pipe(int wpipe) > -{ > - int ret; > - > - do { > - struct lttng_consumer_stream *null_stream = NULL; > - > - ret = write(wpipe, &null_stream, sizeof(null_stream)); > - } while (ret < 0 && errno == EINTR); > -} > - > -/* > * Notify a thread lttng pipe to poll back again. This usually means that > some > * global state has changed so we just send back the thread in a poll wait > * call. > @@ -421,7 +406,7 @@ static void cleanup_relayd(struct > consumer_relayd_sock_pair *relayd, > */ > if (ctx) { > notify_thread_lttng_pipe(ctx->consumer_data_pipe); > - notify_thread_pipe(ctx->consumer_metadata_pipe[1]); > + notify_thread_lttng_pipe(ctx->consumer_metadata_pipe); > } > } > > @@ -1204,8 +1189,8 @@ struct lttng_consumer_local_data *lttng_consumer_create( > goto error_channel_pipe; > } > > - ret = utils_create_pipe(ctx->consumer_metadata_pipe); > - if (ret < 0) { > + ctx->consumer_metadata_pipe = lttng_pipe_open(0); > + if (!ctx->consumer_metadata_pipe) { > goto error_metadata_pipe; > } > > @@ -1217,7 +1202,7 @@ struct lttng_consumer_local_data *lttng_consumer_create( > return ctx; > > error_splice_pipe: > - utils_close_pipe(ctx->consumer_metadata_pipe); > + lttng_pipe_destroy(ctx->consumer_metadata_pipe); > error_metadata_pipe: > utils_close_pipe(ctx->consumer_channel_pipe); > error_channel_pipe: > @@ -1252,6 +1237,7 @@ void lttng_consumer_destroy(struct > lttng_consumer_local_data *ctx) > utils_close_pipe(ctx->consumer_thread_pipe); > utils_close_pipe(ctx->consumer_channel_pipe); > lttng_pipe_destroy(ctx->consumer_data_pipe); > + lttng_pipe_destroy(ctx->consumer_metadata_pipe); > utils_close_pipe(ctx->consumer_should_quit); > utils_close_pipe(ctx->consumer_splice_metadata_pipe); > > @@ -2132,7 +2118,8 @@ void *consumer_thread_metadata_poll(void *data) > goto end_poll; > } > > - ret = lttng_poll_add(&events, ctx->consumer_metadata_pipe[0], LPOLLIN); > + ret = lttng_poll_add(&events, > + lttng_pipe_get_readfd(ctx->consumer_metadata_pipe), > LPOLLIN); > if (ret < 0) { > goto end; > } > @@ -2170,18 +2157,16 @@ restart: > continue; > } > > - if (pollfd == ctx->consumer_metadata_pipe[0]) { > + if (pollfd == > lttng_pipe_get_readfd(ctx->consumer_metadata_pipe)) { > if (revents & (LPOLLERR | LPOLLHUP )) { > DBG("Metadata thread pipe hung up"); > /* > * Remove the pipe from the poll set > and continue the loop > * since their might be data to consume. > */ > - lttng_poll_del(&events, > ctx->consumer_metadata_pipe[0]); > - ret = > close(ctx->consumer_metadata_pipe[0]); > - if (ret < 0) { > - PERROR("close metadata pipe"); > - } > + lttng_poll_del(&events, > + > lttng_pipe_get_readfd(ctx->consumer_metadata_pipe)); > + > lttng_pipe_read_close(ctx->consumer_metadata_pipe); > continue; > } else if (revents & LPOLLIN) { > do { > @@ -2541,10 +2526,7 @@ end: > * only tracked fd in the poll set. The thread will take care of closing > * the read side. > */ > - ret = close(ctx->consumer_metadata_pipe[1]); > - if (ret < 0) { > - PERROR("close data pipe"); > - } > + (void) lttng_pipe_write_close(ctx->consumer_metadata_pipe); > > destroy_data_stream_ht(data_ht); > > diff --git a/src/common/consumer.h b/src/common/consumer.h > index 91039e8..3726fd1 100644 > --- a/src/common/consumer.h > +++ b/src/common/consumer.h > @@ -351,7 +351,7 @@ struct lttng_consumer_local_data { > /* to let the signal handler wake up the fd receiver thread */ > int consumer_should_quit[2]; > /* Metadata poll thread pipe. Transfer metadata stream to it */ > - int consumer_metadata_pipe[2]; > + struct lttng_pipe *consumer_metadata_pipe; > }; > > /* > diff --git a/src/common/kernel-consumer/kernel-consumer.c > b/src/common/kernel-consumer/kernel-consumer.c > index d8aec49..f23fc9c 100644 > --- a/src/common/kernel-consumer/kernel-consumer.c > +++ b/src/common/kernel-consumer/kernel-consumer.c > @@ -288,7 +288,7 @@ int lttng_kconsumer_recv_cmd(struct > lttng_consumer_local_data *ctx, > > /* Get the right pipe where the stream will be sent. */ > if (new_stream->metadata_flag) { > - stream_pipe = ctx->consumer_metadata_pipe[1]; > + stream_pipe = > lttng_pipe_get_writefd(ctx->consumer_metadata_pipe); > } else { > stream_pipe = > lttng_pipe_get_writefd(ctx->consumer_data_pipe); > } > diff --git a/src/common/ust-consumer/ust-consumer.c > b/src/common/ust-consumer/ust-consumer.c > index ddf80da..a81e9d4 100644 > --- a/src/common/ust-consumer/ust-consumer.c > +++ b/src/common/ust-consumer/ust-consumer.c > @@ -189,7 +189,7 @@ static int send_stream_to_thread(struct > lttng_consumer_stream *stream, > > /* Get the right pipe where the stream will be sent. */ > if (stream->metadata_flag) { > - stream_pipe = ctx->consumer_metadata_pipe[1]; > + stream_pipe = > lttng_pipe_get_writefd(ctx->consumer_metadata_pipe); > } else { > stream_pipe = lttng_pipe_get_writefd(ctx->consumer_data_pipe); > } > -- > 1.7.10.4 > > > _______________________________________________ > lttng-dev mailing list > [email protected] > http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
-- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
