Size-based rotation
[lttng-tools.git] / src / bin / lttng-sessiond / rotate.h
index b2f006f3e2fc96bbf0260480e409772dc4e18cc5..6dc3b7aa189768f9c47787f12e03ae031d0585ee 100644 (file)
@@ -18,6 +18,7 @@
 #ifndef ROTATE_H
 #define ROTATE_H
 
+#include <lttng/notification/channel-internal.h>
 #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 */
This page took 0.025462 seconds and 5 git commands to generate.