typedef void (*ltt_session_destroy_notifier)(const struct ltt_session *session,
void *user_data);
+typedef void (*ltt_session_clear_notifier)(const struct ltt_session *session,
+ void *user_data);
/*
* Tracing session list
* Keep a state if this session was rotated after the last stop command.
* We only allow one rotation after a stop. At destroy, we also need to
* know if a rotation occurred since the last stop to rename the current
- * chunk.
+ * chunk. After a stop followed by rotate, all subsequent clear
+ * (without prior start) will succeed, but will be effect-less.
*/
bool rotated_after_last_stop;
/*
* subsequent rotate (without prior start) will return an error.
*/
bool cleared_after_last_stop;
+ /*
+ * True if the session has had an explicit non-quiet rotation.
+ */
+ bool rotated;
/*
* Condition and trigger for size-based rotations.
*/
char *last_archived_chunk_name;
LTTNG_OPTIONAL(uint64_t) last_archived_chunk_id;
struct lttng_dynamic_array destroy_notifiers;
+ struct lttng_dynamic_array clear_notifiers;
/* Session base path override. Set non-null. */
char *base_path;
};
int session_add_destroy_notifier(struct ltt_session *session,
ltt_session_destroy_notifier notifier, void *user_data);
+int session_add_clear_notifier(struct ltt_session *session,
+ ltt_session_clear_notifier notifier, void *user_data);
+void session_notify_clear(struct ltt_session *session);
+
bool session_get(struct ltt_session *session);
void session_put(struct ltt_session *session);