X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=4ac823c017d03754ed545a9a1288df707b84778f;hp=7485e65b259d4b855c301405425225a462b5e0bf;hb=02b3d1769d5f8a33e4109b1e681141c9295dfda6;hpb=2c521c63a46d6c79a7819a822d109ccdd48b6064 diff --git a/src/common/consumer.h b/src/common/consumer.h index 7485e65b2..4ac823c01 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -341,6 +341,9 @@ struct lttng_consumer_stream { */ pthread_cond_t metadata_rdv; pthread_mutex_t metadata_rdv_lock; + + /* Indicate if the stream still has some data to be read. */ + unsigned int has_data:1; }; /* @@ -453,6 +456,19 @@ struct lttng_consumer_local_data { int consumer_splice_metadata_pipe[2]; /* Data stream poll thread pipe. To transfer data stream to the thread */ struct lttng_pipe *consumer_data_pipe; + + /* + * Data thread use that pipe to catch wakeup from read subbuffer that + * detects that there is still data to be read for the stream encountered. + * Before doing so, the stream is flagged to indicate that there is still + * data to be read. + * + * Both pipes (read/write) are owned and used inside the data thread. + */ + struct lttng_pipe *consumer_wakeup_pipe; + /* Indicate if the wakeup thread has been notified. */ + unsigned int has_wakeup:1; + /* 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 */