[lttng-dev] [PATCH 3/3 lttng-tools] Fix: use lttng pipe to send new stream to thread

David Goulet dgoulet at efficios.com
Thu May 16 09:57:57 EDT 2013


The read() calls are in the thread that were changed by the previous
patches. This patch is to completely remove traditional pipe from the
sessiond thread for data and metadata streams.

David

Mathieu Desnoyers:
> 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
> 



More information about the lttng-dev mailing list