X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=ac3b4903f6b8c3e945432b35a471100a8998aede;hp=1e378f04ea631ea4387a1940c407599d19a63966;hb=b83e03c49920557f292d3861f42d0109e6fa03ea;hpb=a2361a610dc8201cc8e165a70682b2f6dc3e0aee diff --git a/src/common/consumer.h b/src/common/consumer.h index 1e378f04e..ac3b4903f 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -206,6 +206,11 @@ struct lttng_consumer_channel { /* Timer value in usec for live streaming. */ unsigned int live_timer_interval; + + int *stream_fds; + int nr_stream_fds; + char root_shm_path[PATH_MAX]; + char shm_path[PATH_MAX]; }; /* @@ -237,6 +242,21 @@ struct lttng_consumer_stream { int shm_fd_is_copy; int data_read; int hangup_flush_done; + + /* + * metadata_timer_lock protects flags waiting_on_metadata and + * missed_metadata_flush. + */ + pthread_mutex_t metadata_timer_lock; + /* + * Flag set when awaiting metadata to be pushed. Used in the + * timer thread to skip waiting on the stream (and stream lock) to + * ensure we can proceed to flushing metadata in live mode. + */ + bool waiting_on_metadata; + /* Raised when a timer misses a metadata flush. */ + bool missed_metadata_flush; + enum lttng_event_output output; /* Maximum subbuffer size. */ unsigned long max_sb_size; @@ -599,7 +619,9 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key, uint64_t tracefile_count, uint64_t session_id_per_pid, unsigned int monitor, - unsigned int live_timer_interval); + unsigned int live_timer_interval, + const char *root_shm_path, + const char *shm_path); void consumer_del_stream(struct lttng_consumer_stream *stream, struct lttng_ht *ht); void consumer_del_metadata_stream(struct lttng_consumer_stream *stream, @@ -666,8 +688,9 @@ int consumer_send_status_channel(int sock, void notify_thread_del_channel(struct lttng_consumer_local_data *ctx, uint64_t key); void consumer_destroy_relayd(struct consumer_relayd_sock_pair *relayd); -unsigned long consumer_get_consumed_maxsize(unsigned long consumed_pos, - unsigned long produced_pos, uint64_t max_stream_size); +unsigned long consumer_get_consume_start_pos(unsigned long consumed_pos, + unsigned long produced_pos, uint64_t nb_packets_per_stream, + uint64_t max_sb_size); int consumer_add_data_stream(struct lttng_consumer_stream *stream); void consumer_del_stream_for_data(struct lttng_consumer_stream *stream); int consumer_add_metadata_stream(struct lttng_consumer_stream *stream);