+/**
+ * Stop the current session.
+ *
+ * The current session is stopped immediately, with all acquisition sessions
+ * being stopped and hardware drivers cleaned up.
+ *
+ * If the session is run in a separate thread, this function will not block
+ * until the session is finished executing. It is the caller's responsibility
+ * to wait for the session thread to return before assuming that the session is
+ * completely decommissioned.
+ *
+ * @return SR_OK upon success, SR_ERR_BUG if no session exists.
+ */
+SR_API int sr_session_stop(void)
+{
+ if (!session) {
+ sr_err("%s: session was NULL", __func__);
+ return SR_ERR_BUG;
+ }
+
+ g_mutex_lock(&session->stop_mutex);
+ session->abort_session = TRUE;
+ g_mutex_unlock(&session->stop_mutex);
+
+ return SR_OK;
+}
+