+ If \c NULL, LTTng doesn't write any trace data for this recording
+ session.
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_name_not_auto{session_name}
+@pre
+ No available recording session is named \lt_p{session_name}.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{output_url} is a valid
+ \ref api-session-url "output URL".
+
+@sa lttng_create_session_snapshot() --
+ Creates a recording session in snapshot mode.
+@sa lttng_create_session_live() --
+ Creates a recording session in live mode.
+@sa \lt_man{lttng-create,1}
+*/
+LTTNG_EXPORT extern int lttng_create_session(const char *session_name, const char *output_url);
+
+/*!
+@brief
+ Creates a recording session named \lt_p{session_name} in
+ \ref api-session-snapshot-mode "snapshot" mode, optionally setting
+ the URL of its initial snapshot output to \lt_p{output_url}.
+
+@deprecated
+ Use lttng_create_session_ext() with a dedicated snapshot
+ \ref api_session_descr "recording session descriptor".
+
+@param[in] session_name
+ Name of the new recording session.
+@param[in] output_url
+ @parblock
+ \ref api-session-url "URL" of an initial snapshot output
+ which LTTng adds to this recording session.
+
+ If it's a \ref api-session-one-port-url "single-port output URL",
+ then the trace data port is \lt_def_net_data_port.
+
+ This initial snapshot output is named <code>snapshot-0</code>.
+
+ If \c NULL, then the created recording session has no initial
+ snapshot output: you need to either add one with
+ lttng_snapshot_add_output() or provide one when you take a snapshot
+ with lttng_snapshot_record().
+ @endparblock
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_name_not_auto{session_name}
+@pre
+ No available recording session is named \lt_p{session_name}.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{output_url} is a valid
+ \ref api-session-url "output URL".
+
+@sa lttng_create_session() --
+ Creates a recording session in local or network streaming mode.
+@sa lttng_create_session_live() --
+ Creates a recording session in live mode.
+@sa \lt_man{lttng-create,1}
+*/
+LTTNG_EXPORT extern int lttng_create_session_snapshot(const char *session_name,
+ const char *output_url);
+
+/*!
+@brief
+ Creates a recording session named \lt_p{session_name} in
+ \ref api-session-live-mode "live" mode, optionally setting its
+ URL to \lt_p{output_url}.
+
+@deprecated
+ Use lttng_create_session_ext() with a dedicated live
+ \ref api_session_descr "recording session descriptor".
+
+@param[in] session_name
+ Name of the new recording session.
+@param[in] output_url
+ @parblock
+ \ref api-session-url "Output URL" of the recording session to
+ create: \ref api-session-one-port-url "single-port" or
+ \ref api-session-two-port-url "two-port".
+
+ If it's a \ref api-session-one-port-url "single-port output URL",
+ then the trace data port is \lt_def_net_data_port.
+
+ If \c NULL, this function uses \lt_def_net_url.
+ @endparblock
+@param[in] live_timer_period
+ Period (µs) of the \ref api-channel-live-timer "live timers" of all
+ the channels of the created recording session.
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_name_not_auto{session_name}
+@pre
+ No available recording session is named \lt_p{session_name}.
+@pre
+ <strong>If not \c NULL</strong>, \lt_p{output_url} is a valid
+ \ref api-session-one-port-url "single-port output URL" or
+ \ref api-session-two-port-url "two-port output URL".
+@pre
+ \lt_p{live_timer_period} ≥ 1
+
+@sa lttng_create_session() --
+ Creates a recording session in local or network streaming mode.
+@sa lttng_create_session_snapshot() --
+ Creates a recording session in snapshot mode.
+@sa \lt_man{lttng-create,1}
+*/
+LTTNG_EXPORT extern int lttng_create_session_live(const char *session_name,
+ const char *output_url,
+ unsigned int live_timer_period);
+
+/*!
+@brief
+ Destroys the recording session named \lt_p{session_name}, blocking
+ until the operation completes.
+
+@deprecated
+ Use lttng_destroy_session_ext().
+
+"Destroying" a recording session means freeing the resources which the
+LTTng daemons and tracers acquired for it, also making sure to flush all
+the recorded trace data to either the local file system or the connected
+LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the
+\ref api-session-modes "recording session mode".
+
+This function stops any recording activity within the recording session
+named \lt_p{session_name}.
+
+This function implicitly calls lttng_stop_tracing(), blocking until the
+trace data of the recording session becomes valid. Use
+lttng_destroy_session_no_wait() to avoid a blocking call.
+
+@param[in] session_name
+ Name of the recording session to destroy.
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_exists{session_name}
+
+@sa lttng_destroy_session_no_wait() --
+ Initiates the destruction operation of a recording session,
+ returning immediately.
+@sa \lt_man{lttng-destroy,1}
+*/
+LTTNG_EXPORT extern int lttng_destroy_session(const char *session_name);
+
+/*!
+@brief
+ Initiates the destruction operation of the recording session named
+ \lt_p{session_name}.
+
+@deprecated
+ Use lttng_destroy_session_ext().
+
+"Destroying" a recording session means freeing the resources which the
+LTTng daemons and tracers acquired for it, also making sure to flush all
+the recorded trace data to either the local file system or the connected
+LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the
+\ref api-session-modes "recording session mode".
+
+Unlike lttng_destroy_session(), this function does \em not block until
+the destruction operation is complete: it returns immediately. This
+means the trace(s) of the recording session might not be valid when
+this function returns, and there's no way to know when it/they become
+valid.
+
+@param[in] session_name
+ Name of the recording session to destroy.
+
+@returns
+ 0 on success, or a \em negative #lttng_error_code enumerator
+ otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_exists{session_name}
+@pre
+ No destruction operation is in progress for the recording session
+ named \lt_p{session_name}.
+
+@sa lttng_destroy_session() --
+ Destroys a recording session, blocking until the operation
+ completes.
+@sa \lt_man{lttng-destroy,1}
+*/
+LTTNG_EXPORT extern int lttng_destroy_session_no_wait(const char *session_name);
+
+/*!
+@brief
+ Initiates a destruction operation of the recording session
+ named \lt_p{session_name}.
+
+"Destroying" a recording session means freeing the resources which the
+LTTng daemons and tracers acquired for it, also making sure to flush all
+the recorded trace data to either the local file system or the connected
+LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the
+\ref api-session-modes "recording session mode".
+
+This function doesn't block until the destruction operation completes:
+it only initiates the operation.
+Use \lt_p{*handle} to wait for the operation to complete.
+
+@param[in] session_name
+ Name of the recording session to destroy.
+@param[out] handle
+ @parblock
+ <strong>On success</strong>, this function sets \lt_p{*handle} to
+ a handle which identifies this recording session destruction
+ operation.
+
+ May be \c NULL.
+
+ Wait for the completion of this destruction operation with
+ lttng_destruction_handle_wait_for_completion().
+
+ Destroy \lt_p{*handle} with lttng_destruction_handle_destroy().
+ @endparblock
+
+@returns
+ #LTTNG_OK on success, or a \em negative enumerator otherwise.
+
+@lt_pre_conn
+@lt_pre_not_null{session_name}
+@lt_pre_sess_exists{session_name}
+@pre
+ No destruction operation is in progress for the recording session
+ named \lt_p{session_name}.
+
+@sa \lt_man{lttng-destroy,1}
+*/