Cleanup: remove duplicated code in snapshot record command
[lttng-tools.git] / src / bin / lttng-sessiond / session.h
index ec03029205163cd5e230337850fed5a88edcad63..19dabb727179bb23a64e2b5cf3a1bba8a5f4ffc3 100644 (file)
@@ -25,6 +25,7 @@
 #include <common/hashtable/hashtable.h>
 #include <lttng/rotation.h>
 #include <lttng/location.h>
+#include <lttng/lttng-error.h>
 
 #include "snapshot.h"
 #include "trace-kernel.h"
@@ -69,7 +70,9 @@ struct ltt_session_list {
  */
 struct ltt_session {
        char name[NAME_MAX];
+       bool has_auto_generated_name;
        char hostname[HOST_NAME_MAX]; /* Local hostname. */
+       time_t creation_time;
        struct ltt_kernel_session *kernel_session;
        struct ltt_ust_session *ust_session;
        struct urcu_ref ref;
@@ -81,6 +84,8 @@ struct ltt_session {
        pthread_mutex_t lock;
        struct cds_list_head list;
        uint64_t id;            /* session unique identifier */
+       /* Indicates if the session has been added to the session list and ht.*/
+       bool published;
        /* Indicates if a destroy command has been applied to this session. */
        bool destroyed;
        /* UID/GID of the user owning the session */
@@ -98,7 +103,11 @@ struct ltt_session {
         * copied into those sessions.
         */
        struct consumer_output *consumer;
-
+       /*
+        * Indicates whether or not the user has specified an output directory
+        * or if it was configured using the default configuration.
+        */
+       bool has_user_specified_directory;
        /* Did at least ONE start command has been triggered?. */
        unsigned int has_been_started:1;
        /*
@@ -112,11 +121,19 @@ struct ltt_session {
        /* Indicate if the session has to output the traces or not. */
        unsigned int output_traces;
        /*
-        * This session is in snapshot mode. This means that every channel enabled
-        * will be set in overwrite mode and mmap. It is considered exclusively for
-        * snapshot purposes.
+        * This session is in snapshot mode. This means that channels enabled
+        * will be set in overwrite mode by default and must be in mmap
+        * output mode. Note that snapshots can be taken on a session that
+        * is not in "snapshot_mode". This parameter only affects channel
+        * creation defaults.
         */
        unsigned int snapshot_mode;
+       /*
+        * A session that has channels that don't use 'mmap' output can't be
+        * used to capture snapshots. This is set to true whenever a
+        * 'splice' kernel channel is enabled.
+        */
+       bool has_non_mmap_channel;
        /*
         * Timer set when the session is created for live reading.
         */
@@ -209,11 +226,13 @@ struct ltt_session {
         */
        struct lttng_condition *rotate_condition;
        struct lttng_trigger *rotate_trigger;
+       LTTNG_OPTIONAL(uint64_t) last_trace_chunk_id;
+       struct lttng_trace_chunk *current_trace_chunk;
 };
 
 /* Prototypes */
-int session_create(char *name, uid_t uid, gid_t gid);
-
+enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
+               struct ltt_session **out_session);
 void session_lock(struct ltt_session *session);
 void session_lock_list(void);
 int session_trylock_list(void);
@@ -246,4 +265,10 @@ int session_access_ok(struct ltt_session *session, uid_t uid, gid_t gid);
 int session_reset_rotation_state(struct ltt_session *session,
                enum lttng_rotation_state result);
 
+enum lttng_error_code session_switch_trace_chunk(struct ltt_session *session,
+               const char *session_base_path_override,
+               const char *chunk_name_override);
+int session_set_trace_chunk(struct ltt_session *session,
+               struct lttng_trace_chunk *current_trace_chunk);
+
 #endif /* _LTT_SESSION_H */
This page took 0.025906 seconds and 4 git commands to generate.