Clean-up: modernize pretty_xml.cpp
[lttng-tools.git] / src / bin / lttng-sessiond / session.cpp
index 0549d36de6b2ba9f9d6bf1770cb493c253c2da1c..0ad891e3252e4e294aaf23026abac9a394080117 100644 (file)
@@ -158,7 +158,7 @@ void session_list_wait_empty()
 /*
  * Acquire session list lock
  */
-void session_lock_list()
+void session_lock_list() noexcept
 {
        pthread_mutex_lock(&the_session_list.lock);
 }
@@ -166,7 +166,7 @@ void session_lock_list()
 /*
  * Try to acquire session list lock
  */
-int session_trylock_list()
+int session_trylock_list() noexcept
 {
        return pthread_mutex_trylock(&the_session_list.lock);
 }
@@ -174,7 +174,7 @@ int session_trylock_list()
 /*
  * Release session list lock
  */
-void session_unlock_list()
+void session_unlock_list() noexcept
 {
        pthread_mutex_unlock(&the_session_list.lock);
 }
@@ -475,7 +475,7 @@ static int _session_set_trace_chunk_no_lock_check(struct ltt_session *session,
        uint64_t chunk_id;
        enum lttng_trace_chunk_status chunk_status;
 
-       rcu_read_lock();
+       lttng::urcu::read_lock_guard read_lock;
        /*
         * Ownership of current trace chunk is transferred to
         * `current_trace_chunk`.
@@ -580,7 +580,6 @@ end:
                current_trace_chunk = nullptr;
        }
 end_no_move:
-       rcu_read_unlock();
        lttng_trace_chunk_put(current_trace_chunk);
        return ret;
 error:
@@ -845,7 +844,7 @@ static enum lttng_error_code session_kernel_open_packets(struct ltt_session *ses
        struct cds_lfht_node *node;
        struct ltt_kernel_channel *chan;
 
-       rcu_read_lock();
+       lttng::urcu::read_lock_guard read_lock;
 
        cds_lfht_first(session->kernel_session->consumer->socks->ht, &iter.iter);
        node = cds_lfht_iter_get_node(&iter.iter);
@@ -869,7 +868,6 @@ static enum lttng_error_code session_kernel_open_packets(struct ltt_session *ses
        }
 
 end:
-       rcu_read_unlock();
        return ret;
 }
 
@@ -930,19 +928,19 @@ static void session_notify_destruction(const struct ltt_session *session)
 /*
  * Fire each clear notifier once, and remove them from the array.
  */
-void session_notify_clear(struct ltt_session *session)
+void session_notify_clear(ltt_session& session)
 {
        size_t i;
-       const size_t count = lttng_dynamic_array_get_count(&session->clear_notifiers);
+       const size_t count = lttng_dynamic_array_get_count(&session.clear_notifiers);
 
        for (i = 0; i < count; i++) {
                const struct ltt_session_clear_notifier_element *element =
                        (ltt_session_clear_notifier_element *) lttng_dynamic_array_get_element(
-                               &session->clear_notifiers, i);
+                               &session.clear_notifiers, i);
 
-               element->notifier(session, element->user_data);
+               element->notifier(&session, element->user_data);
        }
-       lttng_dynamic_array_clear(&session->clear_notifiers);
+       lttng_dynamic_array_clear(&session.clear_notifiers);
 }
 
 static void session_release(struct urcu_ref *ref)
@@ -1361,26 +1359,26 @@ bool session_access_ok(struct ltt_session *session, uid_t uid)
  *
  * Must be called with the session and session_list locks held.
  */
-int session_reset_rotation_state(struct ltt_session *session, enum lttng_rotation_state result)
+int session_reset_rotation_state(ltt_session& session, enum lttng_rotation_state result)
 {
        int ret = 0;
 
        ASSERT_LOCKED(the_session_list.lock);
-       ASSERT_LOCKED(session->lock);
+       ASSERT_LOCKED(session.lock);
 
-       session->rotation_state = result;
-       if (session->rotation_pending_check_timer_enabled) {
+       session.rotation_state = result;
+       if (session.rotation_pending_check_timer_enabled) {
                ret = timer_session_rotation_pending_check_stop(session);
        }
-       if (session->chunk_being_archived) {
+       if (session.chunk_being_archived) {
                uint64_t chunk_id;
                enum lttng_trace_chunk_status chunk_status;
 
-               chunk_status = lttng_trace_chunk_get_id(session->chunk_being_archived, &chunk_id);
+               chunk_status = lttng_trace_chunk_get_id(session.chunk_being_archived, &chunk_id);
                LTTNG_ASSERT(chunk_status == LTTNG_TRACE_CHUNK_STATUS_OK);
-               LTTNG_OPTIONAL_SET(&session->last_archived_chunk_id, chunk_id);
-               lttng_trace_chunk_put(session->chunk_being_archived);
-               session->chunk_being_archived = nullptr;
+               LTTNG_OPTIONAL_SET(&session.last_archived_chunk_id, chunk_id);
+               lttng_trace_chunk_put(session.chunk_being_archived);
+               session.chunk_being_archived = nullptr;
                /*
                 * Fire the clear reply notifiers if we are completing a clear
                 * rotation.
@@ -1406,7 +1404,7 @@ bool sample_session_id_by_name(const char *name, uint64_t *id)
        struct lttng_ht_iter iter;
        struct ltt_session *ls;
 
-       rcu_read_lock();
+       lttng::urcu::read_lock_guard read_lock;
 
        if (!ltt_sessions_ht_by_name) {
                found = false;
@@ -1426,12 +1424,15 @@ bool sample_session_id_by_name(const char *name, uint64_t *id)
 
        DBG3("Session id `%" PRIu64 "` sampled for session `%s", *id, name);
 end:
-       rcu_read_unlock();
        return found;
 }
 
 void ls::details::locked_session_release(ltt_session *session)
 {
+       if (!session) {
+               return;
+       }
+
        session_unlock(session);
        session_put(session);
 }
This page took 0.026772 seconds and 4 git commands to generate.