Use compiler-agnostic defines to silence warning
[lttng-tools.git] / src / common / trace-chunk.cpp
index 2be4224f950167675df9b46e155fb4a34ff44270..9c30ef5b3790a16b5267b82e59793ea9e504b222 100644 (file)
@@ -21,6 +21,7 @@
 #include <common/time.hpp>
 #include <common/trace-chunk-registry.hpp>
 #include <common/trace-chunk.hpp>
 #include <common/time.hpp>
 #include <common/trace-chunk-registry.hpp>
 #include <common/trace-chunk.hpp>
+#include <common/urcu.hpp>
 #include <common/utils.hpp>
 
 #include <lttng/constant.h>
 #include <common/utils.hpp>
 
 #include <lttng/constant.h>
@@ -256,7 +257,7 @@ static int fs_handle_untracked_close(struct fs_handle *_handle)
 {
        struct fs_handle_untracked *handle =
                lttng::utils::container_of(_handle, &fs_handle_untracked::parent);
 {
        struct fs_handle_untracked *handle =
                lttng::utils::container_of(_handle, &fs_handle_untracked::parent);
-       int ret = close(handle->fd);
+       const int ret = close(handle->fd);
 
        fs_handle_untracked_destroy(handle);
        return ret;
 
        fs_handle_untracked_destroy(handle);
        return ret;
@@ -1545,7 +1546,7 @@ static int lttng_trace_chunk_move_to_completed_post_release(struct lttng_trace_c
         * the creation of the next chunk. This happens if a rotation is
         * performed while tracing is stopped.
         */
         * the creation of the next chunk. This happens if a rotation is
         * performed while tracing is stopped.
         */
-       if (!trace_chunk->path || strcmp(trace_chunk->path, DEFAULT_CHUNK_TMP_OLD_DIRECTORY)) {
+       if (!trace_chunk->path || strcmp(trace_chunk->path, DEFAULT_CHUNK_TMP_OLD_DIRECTORY) != 0) {
                status = lttng_trace_chunk_rename_path_no_lock(trace_chunk,
                                                               DEFAULT_CHUNK_TMP_OLD_DIRECTORY);
                if (status != LTTNG_TRACE_CHUNK_STATUS_OK) {
                status = lttng_trace_chunk_rename_path_no_lock(trace_chunk,
                                                               DEFAULT_CHUNK_TMP_OLD_DIRECTORY);
                if (status != LTTNG_TRACE_CHUNK_STATUS_OK) {
@@ -1827,9 +1828,8 @@ static void lttng_trace_chunk_release(struct urcu_ref *ref)
                element = lttng::utils::container_of(chunk,
                                                     &lttng_trace_chunk_registry_element::chunk);
                if (element->registry) {
                element = lttng::utils::container_of(chunk,
                                                     &lttng_trace_chunk_registry_element::chunk);
                if (element->registry) {
-                       rcu_read_lock();
+                       const lttng::urcu::read_lock_guard read_lock;
                        cds_lfht_del(element->registry->ht, &element->trace_chunk_registry_ht_node);
                        cds_lfht_del(element->registry->ht, &element->trace_chunk_registry_ht_node);
-                       rcu_read_unlock();
                        call_rcu(&element->rcu_node, free_lttng_trace_chunk_registry_element);
                } else {
                        /* Never published, can be free'd immediately. */
                        call_rcu(&element->rcu_node, free_lttng_trace_chunk_registry_element);
                } else {
                        /* Never published, can be free'd immediately. */
@@ -1878,7 +1878,7 @@ void lttng_trace_chunk_registry_destroy(struct lttng_trace_chunk_registry *regis
                return;
        }
        if (registry->ht) {
                return;
        }
        if (registry->ht) {
-               int ret = cds_lfht_destroy(registry->ht, nullptr);
+               const int ret = cds_lfht_destroy(registry->ht, nullptr);
                LTTNG_ASSERT(!ret);
        }
        free(registry);
                LTTNG_ASSERT(!ret);
        }
        free(registry);
@@ -1943,6 +1943,8 @@ lttng_trace_chunk_registry_publish_chunk(struct lttng_trace_chunk_registry *regi
        pthread_mutex_lock(&chunk->lock);
        element = lttng_trace_chunk_registry_element_create_from_chunk(chunk, session_id);
        pthread_mutex_unlock(&chunk->lock);
        pthread_mutex_lock(&chunk->lock);
        element = lttng_trace_chunk_registry_element_create_from_chunk(chunk, session_id);
        pthread_mutex_unlock(&chunk->lock);
+
+       const lttng::urcu::read_lock_guard read_lock;
        if (!element) {
                goto end;
        }
        if (!element) {
                goto end;
        }
@@ -1953,7 +1955,6 @@ lttng_trace_chunk_registry_publish_chunk(struct lttng_trace_chunk_registry *regi
        chunk = nullptr;
        element_hash = lttng_trace_chunk_registry_element_hash(element);
 
        chunk = nullptr;
        element_hash = lttng_trace_chunk_registry_element_hash(element);
 
-       rcu_read_lock();
        while (true) {
                struct cds_lfht_node *published_node;
                struct lttng_trace_chunk *published_chunk;
        while (true) {
                struct cds_lfht_node *published_node;
                struct lttng_trace_chunk *published_chunk;
@@ -2005,7 +2006,6 @@ lttng_trace_chunk_registry_publish_chunk(struct lttng_trace_chunk_registry *regi
                 * chunk.
                 */
        }
                 * chunk.
                 */
        }
-       rcu_read_unlock();
 end:
        return element ? &element->chunk : nullptr;
 }
 end:
        return element ? &element->chunk : nullptr;
 }
@@ -2034,7 +2034,7 @@ static struct lttng_trace_chunk *_lttng_trace_chunk_registry_find_chunk(
        struct lttng_trace_chunk *published_chunk = nullptr;
        struct cds_lfht_iter iter;
 
        struct lttng_trace_chunk *published_chunk = nullptr;
        struct cds_lfht_iter iter;
 
-       rcu_read_lock();
+       const lttng::urcu::read_lock_guard read_lock;
        cds_lfht_lookup(registry->ht,
                        element_hash,
                        lttng_trace_chunk_registry_element_match,
        cds_lfht_lookup(registry->ht,
                        element_hash,
                        lttng_trace_chunk_registry_element_match,
@@ -2051,7 +2051,6 @@ static struct lttng_trace_chunk *_lttng_trace_chunk_registry_find_chunk(
                published_chunk = &published_element->chunk;
        }
 end:
                published_chunk = &published_element->chunk;
        }
 end:
-       rcu_read_unlock();
        return published_chunk;
 }
 
        return published_chunk;
 }
 
@@ -2066,7 +2065,7 @@ int lttng_trace_chunk_registry_chunk_exists(const struct lttng_trace_chunk_regis
                                            uint64_t chunk_id,
                                            bool *chunk_exists)
 {
                                            uint64_t chunk_id,
                                            bool *chunk_exists)
 {
-       int ret = 0;
+       const int ret = 0;
        lttng_trace_chunk_registry_element target_element;
 
        target_element.chunk.id.is_set = true;
        lttng_trace_chunk_registry_element target_element;
 
        target_element.chunk.id.is_set = true;
@@ -2077,7 +2076,7 @@ int lttng_trace_chunk_registry_chunk_exists(const struct lttng_trace_chunk_regis
        struct cds_lfht_node *published_node;
        struct cds_lfht_iter iter;
 
        struct cds_lfht_node *published_node;
        struct cds_lfht_iter iter;
 
-       rcu_read_lock();
+       const lttng::urcu::read_lock_guard read_lock;
        cds_lfht_lookup(registry->ht,
                        element_hash,
                        lttng_trace_chunk_registry_element_match,
        cds_lfht_lookup(registry->ht,
                        element_hash,
                        lttng_trace_chunk_registry_element_match,
@@ -2091,7 +2090,6 @@ int lttng_trace_chunk_registry_chunk_exists(const struct lttng_trace_chunk_regis
 
        *chunk_exists = !cds_lfht_is_node_deleted(published_node);
 end:
 
        *chunk_exists = !cds_lfht_is_node_deleted(published_node);
 end:
-       rcu_read_unlock();
        return ret;
 }
 
        return ret;
 }
 
@@ -2105,13 +2103,15 @@ lttng_trace_chunk_registry_find_anonymous_chunk(const struct lttng_trace_chunk_r
 unsigned int
 lttng_trace_chunk_registry_put_each_chunk(const struct lttng_trace_chunk_registry *registry)
 {
 unsigned int
 lttng_trace_chunk_registry_put_each_chunk(const struct lttng_trace_chunk_registry *registry)
 {
-       struct cds_lfht_iter iter;
-       struct lttng_trace_chunk_registry_element *chunk_element;
        unsigned int trace_chunks_left = 0;
 
        DBG("Releasing trace chunk registry to all trace chunks");
        unsigned int trace_chunks_left = 0;
 
        DBG("Releasing trace chunk registry to all trace chunks");
-       rcu_read_lock();
-       cds_lfht_for_each_entry (registry->ht, &iter, chunk_element, trace_chunk_registry_ht_node) {
+
+       for (auto *chunk_element : lttng::urcu::lfht_iteration_adapter<
+                    lttng_trace_chunk_registry_element,
+                    decltype(lttng_trace_chunk_registry_element::trace_chunk_registry_ht_node),
+                    &lttng_trace_chunk_registry_element::trace_chunk_registry_ht_node>(
+                    *registry->ht)) {
                const char *chunk_id_str = "none";
                char chunk_id_buf[MAX_INT_DEC_LEN(uint64_t)];
 
                const char *chunk_id_str = "none";
                char chunk_id_buf[MAX_INT_DEC_LEN(uint64_t)];
 
@@ -2140,7 +2140,7 @@ lttng_trace_chunk_registry_put_each_chunk(const struct lttng_trace_chunk_registr
                lttng_trace_chunk_put(&chunk_element->chunk);
                trace_chunks_left++;
        }
                lttng_trace_chunk_put(&chunk_element->chunk);
                trace_chunks_left++;
        }
-       rcu_read_unlock();
+
        DBG("Released reference to %u trace chunks in %s()", trace_chunks_left, __FUNCTION__);
 
        return trace_chunks_left;
        DBG("Released reference to %u trace chunks in %s()", trace_chunks_left, __FUNCTION__);
 
        return trace_chunks_left;
This page took 0.028422 seconds and 4 git commands to generate.