X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Frotate.h;h=6dc3b7aa189768f9c47787f12e03ae031d0585ee;hp=b2f006f3e2fc96bbf0260480e409772dc4e18cc5;hb=90936dcf0968343f20b2f6fd365b9c015cdb9717;hpb=db66e57489e5014289dc1d831e1eac90ac4fc0da diff --git a/src/bin/lttng-sessiond/rotate.h b/src/bin/lttng-sessiond/rotate.h index b2f006f3e..6dc3b7aa1 100644 --- a/src/bin/lttng-sessiond/rotate.h +++ b/src/bin/lttng-sessiond/rotate.h @@ -18,6 +18,7 @@ #ifndef ROTATE_H #define ROTATE_H +#include #include "rotation-thread.h" /* @@ -41,11 +42,35 @@ struct rotation_channel_info { struct cds_lfht_node rotate_channels_ht_node; }; + extern struct cds_lfht *channel_pending_rotate_ht; +extern struct lttng_notification_channel *rotate_notification_channel; unsigned long hash_channel_key(struct rotation_channel_key *key); /* session lock must be held by this function's caller. */ int rename_complete_chunk(struct ltt_session *session, time_t ts); +int relay_rotate_pending(struct ltt_session *session, uint64_t chunk_id); + +/* + * When we start the rotation of a channel, we add its information in + * channel_pending_rotate_ht. This is called in the context of + * thread_manage_client when the client asks for a rotation, in the context + * of the sessiond_timer thread when periodic rotations are enabled and from + * the rotation_thread when size-based rotations are enabled. + */ +int rotate_add_channel_pending(uint64_t key, enum lttng_domain_type domain, + struct ltt_session *session); + +/* + * Subscribe/unsubscribe the notification_channel from the rotation_thread to + * session usage notifications to perform size-based rotations. + */ +int subscribe_session_consumed_size_rotation(struct ltt_session *session, + uint64_t size, + struct notification_thread_handle *notification_thread_handle); +int unsubscribe_session_consumed_size_rotation(struct ltt_session *session, + struct notification_thread_handle *notification_thread_handle); + #endif /* ROTATE_H */