X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer%2Fconsumer.h;h=6a38e50e55a0a5a9b8c3d6eea784a718379b594d;hb=cf0bcb51ea857687a353d2851e572dba6cc63cb0;hp=db5cbf6a01004710de022fae90bffff8e31bb53e;hpb=0dd01979d6f26886199ef746377640b57260421c;p=lttng-tools.git diff --git a/src/common/consumer/consumer.h b/src/common/consumer/consumer.h index db5cbf6a0..6a38e50e5 100644 --- a/src/common/consumer/consumer.h +++ b/src/common/consumer/consumer.h @@ -61,6 +61,7 @@ enum lttng_consumer_command { LTTNG_CONSUMER_DISCARDED_EVENTS, LTTNG_CONSUMER_LOST_PACKETS, LTTNG_CONSUMER_CLEAR_QUIESCENT_CHANNEL, + LTTNG_CONSUMER_SET_CHANNEL_MONITOR_PIPE, }; /* State of each fd in consumer */ @@ -160,6 +161,7 @@ struct lttng_consumer_channel { /* Metadata cache is metadata channel */ struct consumer_metadata_cache *metadata_cache; + /* For UST metadata periodical flush */ int switch_timer_enabled; timer_t switch_timer; @@ -170,6 +172,10 @@ struct lttng_consumer_channel { timer_t live_timer; int live_timer_error; + /* For channel monitoring timer. */ + int monitor_timer_enabled; + timer_t monitor_timer; + /* On-disk circular buffer */ uint64_t tracefile_size; uint64_t tracefile_count; @@ -337,9 +343,9 @@ struct lttng_consumer_stream { * Lock to use the stream FDs since they are used between threads. * * This is nested INSIDE the consumer_data lock. - * This is nested INSIDE the metadata cache lock. * This is nested INSIDE the channel lock. * This is nested INSIDE the channel timer lock. + * This is nested OUTSIDE the metadata cache lock. * This is nested OUTSIDE consumer_relayd_sock_pair lock. */ pthread_mutex_t lock; @@ -390,9 +396,9 @@ struct lttng_consumer_stream { /* Copy of the sequence number of the last packet extracted. */ uint64_t last_sequence_number; /* - * FD of the index file for this stream. + * Index file object of the index file for this stream. */ - int index_fd; + struct lttng_index_file *index_file; /* * Local pipe to extract data when using splice. @@ -539,6 +545,11 @@ struct lttng_consumer_local_data { int consumer_should_quit[2]; /* Metadata poll thread pipe. Transfer metadata stream to it */ struct lttng_pipe *consumer_metadata_pipe; + /* + * Pipe used by the channel monitoring timers to provide state samples + * to the session daemon (write-only). + */ + int channel_monitor_pipe; }; /* @@ -591,6 +602,9 @@ struct lttng_consumer_global_data { struct lttng_ht *stream_per_chan_id_ht; }; +/* Flag used to temporarily pause data consumption from testpoints. */ +extern int data_consumption_paused; + /* * Init consumer data structures. */ @@ -626,12 +640,6 @@ void lttng_consumer_should_exit(struct lttng_consumer_local_data *ctx); */ 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