LTTNG_CONSUMER_STREAMS_SENT,
LTTNG_CONSUMER_DISCARDED_EVENTS,
LTTNG_CONSUMER_LOST_PACKETS,
+ 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.
/* Identify if the stream is the metadata */
unsigned int metadata_flag;
+ /*
+ * Last known metadata version, reset the metadata file in case
+ * of change.
+ */
+ uint64_t metadata_version;
/* Used when the stream is set for network streaming */
uint64_t relayd_stream_id;
/*
/* Indicate if the stream still has some data to be read. */
unsigned int has_data:1;
+ /*
+ * Inform the consumer or relay to reset the metadata
+ * file before writing in it (regeneration).
+ */
+ unsigned int reset_metadata_flag:1;
};
/*
*/
void lttng_consumer_cleanup(void);
-/*
- * Flush pending writes to trace output disk file.
- */
-void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
- off_t orig_offset);
-
/*
* Poll on the should_quit pipe and the command socket return -1 on error and
* should exit, 0 if data is available on the command socket