[lttng-dev] [PATCH 3/3 lttng-tools] Fix: use lttng pipe to send new stream to thread
Mathieu Desnoyers
mathieu.desnoyers at efficios.com
Wed May 15 15:20:38 EDT 2013
same question about not using lttng_pipe_read() here.
Thanks,
Mathieu
* David Goulet (dgoulet at efficios.com) wrote:
> Signed-off-by: David Goulet <dgoulet at efficios.com>
> ---
> src/common/kernel-consumer/kernel-consumer.c | 15 +++++++--------
> src/common/ust-consumer/ust-consumer.c | 16 ++++++++--------
> 2 files changed, 15 insertions(+), 16 deletions(-)
>
> diff --git a/src/common/kernel-consumer/kernel-consumer.c b/src/common/kernel-consumer/kernel-consumer.c
> index f23fc9c..d985014 100644
> --- a/src/common/kernel-consumer/kernel-consumer.c
> +++ b/src/common/kernel-consumer/kernel-consumer.c
> @@ -168,7 +168,8 @@ int lttng_kconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
> }
> case LTTNG_CONSUMER_ADD_STREAM:
> {
> - int fd, stream_pipe;
> + int fd;
> + struct lttng_pipe *stream_pipe;
> struct consumer_relayd_sock_pair *relayd = NULL;
> struct lttng_consumer_stream *new_stream;
> struct lttng_consumer_channel *channel;
> @@ -288,18 +289,16 @@ 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 = lttng_pipe_get_writefd(ctx->consumer_metadata_pipe);
> + stream_pipe = ctx->consumer_metadata_pipe;
> } else {
> - stream_pipe = lttng_pipe_get_writefd(ctx->consumer_data_pipe);
> + stream_pipe = ctx->consumer_data_pipe;
> }
>
> - do {
> - ret = write(stream_pipe, &new_stream, sizeof(new_stream));
> - } while (ret < 0 && errno == EINTR);
> + ret = lttng_pipe_write(stream_pipe, &new_stream, sizeof(new_stream));
> if (ret < 0) {
> - PERROR("Consumer write %s stream to pipe %d",
> + ERR("Consumer write %s stream to pipe %d",
> new_stream->metadata_flag ? "metadata" : "data",
> - stream_pipe);
> + lttng_pipe_get_writefd(stream_pipe));
> consumer_del_stream(new_stream, NULL);
> goto end_nosignal;
> }
> diff --git a/src/common/ust-consumer/ust-consumer.c b/src/common/ust-consumer/ust-consumer.c
> index a81e9d4..fa46634 100644
> --- a/src/common/ust-consumer/ust-consumer.c
> +++ b/src/common/ust-consumer/ust-consumer.c
> @@ -185,21 +185,21 @@ error:
> static int send_stream_to_thread(struct lttng_consumer_stream *stream,
> struct lttng_consumer_local_data *ctx)
> {
> - int ret, stream_pipe;
> + int ret;
> + struct lttng_pipe *stream_pipe;
>
> /* Get the right pipe where the stream will be sent. */
> if (stream->metadata_flag) {
> - stream_pipe = lttng_pipe_get_writefd(ctx->consumer_metadata_pipe);
> + stream_pipe = ctx->consumer_metadata_pipe;
> } else {
> - stream_pipe = lttng_pipe_get_writefd(ctx->consumer_data_pipe);
> + stream_pipe = ctx->consumer_data_pipe;
> }
>
> - do {
> - ret = write(stream_pipe, &stream, sizeof(stream));
> - } while (ret < 0 && errno == EINTR);
> + ret = lttng_pipe_write(stream_pipe, &stream, sizeof(stream));
> if (ret < 0) {
> - PERROR("Consumer write %s stream to pipe %d",
> - stream->metadata_flag ? "metadata" : "data", stream_pipe);
> + ERR("Consumer write %s stream to pipe %d",
> + stream->metadata_flag ? "metadata" : "data",
> + lttng_pipe_get_writefd(stream_pipe));
> }
>
> return ret;
> --
> 1.7.10.4
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
More information about the lttng-dev
mailing list