bool has_auto_generated_name;
bool name_contains_creation_time;
char hostname[HOST_NAME_MAX]; /* Local hostname. */
+ /* Path of the last closed chunk. */
+ char last_chunk_path[LTTNG_PATH_MAX];
time_t creation_time;
struct ltt_kernel_session *kernel_session;
struct ltt_ust_session *ust_session;
char *base_path;
};
-/* Prototypes */
enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
- const char *base_path, struct ltt_session **out_session);
+ struct ltt_session **out_session);
void session_lock(struct ltt_session *session);
+void session_unlock(struct ltt_session *session);
+
+/*
+ * The session list lock covers more ground than its name implies. While
+ * it does protect against concurent mutations of the session list, it is
+ * also used as a multi-session lock when synchronizing newly-registered
+ * 'user space tracer' and 'agent' applications.
+ *
+ * In other words, it prevents session configurations from changing while they
+ * are being transmitted to the various applications.
+ */
void session_lock_list(void);
int session_trylock_list(void);
-void session_unlock(struct ltt_session *session);
void session_unlock_list(void);
void session_destroy(struct ltt_session *session);
*/
int session_close_trace_chunk(const struct ltt_session *session,
struct lttng_trace_chunk *trace_chunk,
- const enum lttng_trace_chunk_command_type *close_command);
+ const enum lttng_trace_chunk_command_type *close_command,
+ char *path);
bool session_output_supports_trace_chunks(const struct ltt_session *session);