X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer-timer.h;h=baaa82b04993a1ee1173ccb5fc5952555b1cb95c;hb=d3c04b7c1cbb447e82858125c64c4f69160d8023;hp=84061587f04ddd4a06f6234860bd0147a3b62ac4;hpb=331744e34f56a5aec69b05d356d6901e67926acc;p=lttng-tools.git diff --git a/src/common/consumer-timer.h b/src/common/consumer-timer.h index 84061587f..baaa82b04 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_signal_init(void); +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); +int consumer_signal_init(void); #endif /* CONSUMER_TIMER_H */