Fix: use lttng pipe to send new stream to thread
authorDavid Goulet <dgoulet@efficios.com>
Tue, 14 May 2013 17:51:07 +0000 (13:51 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Wed, 22 May 2013 14:41:37 +0000 (10:41 -0400)
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/common/kernel-consumer/kernel-consumer.c
src/common/ust-consumer/ust-consumer.c

index f23fc9c5711f18101e1b7b3fb6cd7245ea378cee..d9850144bacf975d405164d071bd0353327470de 100644 (file)
@@ -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;
                }
index 3731cbb26b527c4deb1621de5bf3f84051007a20..e0280f1489e2e8defa25e1311023f4f518e4d666 100644 (file)
@@ -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;
This page took 0.032194 seconds and 4 git commands to generate.