X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconsumer-timer.h;h=f3fac5d25d8ce791b0767f55bea5fb5d2f6f9d13;hp=84061587f04ddd4a06f6234860bd0147a3b62ac4;hb=d3e2ba59faddb31870e2ce29b6a881f7ad5ad883;hpb=331744e34f56a5aec69b05d356d6901e67926acc diff --git a/src/common/consumer-timer.h b/src/common/consumer-timer.h index 84061587f..f3fac5d25 100644 --- a/src/common/consumer-timer.h +++ b/src/common/consumer-timer.h @@ -26,24 +26,30 @@ #define LTTNG_CONSUMER_SIG_SWITCH SIGRTMIN + 10 #define LTTNG_CONSUMER_SIG_TEARDOWN SIGRTMIN + 11 +#define LTTNG_CONSUMER_SIG_LIVE SIGRTMIN + 12 #define CLOCKID CLOCK_MONOTONIC /* * Handle timer teardown race wrt memory free of private data by consumer * signals are handled by a single thread, which permits a synchronization - * point between handling of each signal. + * point between handling of each signal. Internal lock ensures mutual + * exclusion. */ struct timer_signal_data { pthread_t tid; /* thread id managing signals */ int setup_done; int qs_done; + pthread_mutex_t lock; }; void consumer_timer_switch_start(struct lttng_consumer_channel *channel, unsigned int switch_timer_interval); void consumer_timer_switch_stop(struct lttng_consumer_channel *channel); -void *consumer_timer_metadata_thread(void *data); +void consumer_timer_live_start(struct lttng_consumer_channel *channel, + int live_timer_interval); +void consumer_timer_live_stop(struct lttng_consumer_channel *channel); +void *consumer_timer_thread(void *data); void consumer_signal_init(void); #endif /* CONSUMER_TIMER_H */