LTTNG_CONSUMER_SNAPSHOT_CHANNEL,
LTTNG_CONSUMER_SNAPSHOT_METADATA,
LTTNG_CONSUMER_STREAMS_SENT,
+ LTTNG_CONSUMER_CLEAR_QUIESCENT_CHANNEL,
};
/* State of each fd in consumer */
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.