X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=cd3476675c4e465d8f46f2b5aef8ccc4e38a8e9b;hb=f21fa4fd488ef62230e01c9076f2aab06f2b6b7b;hp=ac3b4903f6b8c3e945432b35a471100a8998aede;hpb=36b637f02bbcd3855d0b7e62ebaa477031b343a5;p=lttng-tools.git diff --git a/src/common/consumer.h b/src/common/consumer.h index ac3b4903f..cd3476675 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -58,6 +58,7 @@ enum lttng_consumer_command { LTTNG_CONSUMER_SNAPSHOT_CHANNEL, LTTNG_CONSUMER_SNAPSHOT_METADATA, LTTNG_CONSUMER_STREAMS_SENT, + LTTNG_CONSUMER_CLEAR_QUIESCENT_CHANNEL, }; /* State of each fd in consumer */ @@ -243,6 +244,25 @@ struct lttng_consumer_stream { int data_read; int hangup_flush_done; + /* + * Whether the stream is in a "complete" state (e.g. it does not have a + * partially written sub-buffer. + * + * Initialized to "false" on stream creation (first packet is empty). + * + * The various transitions of the quiescent state are: + * - On "start" tracing: set to false, since the stream is not + * "complete". + * - On "stop" tracing: if !quiescent -> flush FINAL (update + * timestamp_end), and set to true; the stream has entered a + * complete/quiescent state. + * - On "destroy" or stream/application hang-up: if !quiescent -> + * flush FINAL, and set to true. + * + * NOTE: Update and read are protected by the stream lock. + */ + bool quiescent; + /* * metadata_timer_lock protects flags waiting_on_metadata and * missed_metadata_flush.