Clean-up: modernize pretty_xml.cpp
[lttng-tools.git] / src / common / consumer / consumer-timer.cpp
index fa496336d8643e84018e2ca286018b70078fad50..2ae7f0f73d1b2fdaffe59ed6b21b3814b78e8c22 100644 (file)
 #include <common/consumer/consumer-timer.hpp>
 #include <common/kernel-consumer/kernel-consumer.hpp>
 #include <common/kernel-ctl/kernel-ctl.hpp>
+#include <common/urcu.hpp>
 #include <common/ust-consumer/ust-consumer.hpp>
 
 #include <bin/lttng-consumerd/health-consumerd.hpp>
 #include <inttypes.h>
 #include <signal.h>
 
-typedef int (*sample_positions_cb)(struct lttng_consumer_stream *stream);
-typedef int (*get_consumed_cb)(struct lttng_consumer_stream *stream, unsigned long *consumed);
-typedef int (*get_produced_cb)(struct lttng_consumer_stream *stream, unsigned long *produced);
-typedef int (*flush_index_cb)(struct lttng_consumer_stream *stream);
+using sample_positions_cb = int (*)(struct lttng_consumer_stream *);
+using get_consumed_cb = int (*)(struct lttng_consumer_stream *, unsigned long *);
+using get_produced_cb = int (*)(struct lttng_consumer_stream *, unsigned long *);
+using flush_index_cb = int (*)(struct lttng_consumer_stream *);
 
 static struct timer_signal_data timer_signal = {
        .tid = 0,
@@ -95,7 +96,7 @@ static void metadata_switch_timer(struct lttng_consumer_local_data *ctx, siginfo
                 * - metadata_socket_lock
                 *   - Calling lttng_ustconsumer_recv_metadata():
                 *     - channel->metadata_cache->lock
-                *     - Calling consumer_metadata_cache_flushed():
+                *     - Calling consumer_wait_metadata_cache_flushed():
                 *       - channel->timer_lock
                 *         - channel->metadata_cache->lock
                 *
@@ -104,7 +105,7 @@ static void metadata_switch_timer(struct lttng_consumer_local_data *ctx, siginfo
                 * they are held while consumer_timer_switch_stop() is
                 * called.
                 */
-               ret = lttng_ustconsumer_request_metadata(ctx, channel, 1, 1);
+               ret = lttng_ustconsumer_request_metadata(ctx, channel, true, 1);
                if (ret < 0) {
                        channel->switch_timer_error = 1;
                }
@@ -282,23 +283,23 @@ static void live_timer(struct lttng_consumer_local_data *ctx, siginfo_t *si)
 
        DBG("Live timer for channel %" PRIu64, channel->key);
 
-       rcu_read_lock();
-       cds_lfht_for_each_entry_duplicate(ht->ht,
-                                         ht->hash_fct(&channel->key, lttng_ht_seed),
-                                         ht->match_fct,
-                                         &channel->key,
-                                         &iter.iter,
-                                         stream,
-                                         node_channel_id.node)
        {
-               ret = check_stream(stream, flush_index);
-               if (ret < 0) {
-                       goto error_unlock;
+               lttng::urcu::read_lock_guard read_lock;
+               cds_lfht_for_each_entry_duplicate(ht->ht,
+                                                 ht->hash_fct(&channel->key, lttng_ht_seed),
+                                                 ht->match_fct,
+                                                 &channel->key,
+                                                 &iter.iter,
+                                                 stream,
+                                                 node_channel_id.node)
+               {
+                       ret = check_stream(stream, flush_index);
+                       if (ret < 0) {
+                               goto error_unlock;
+                       }
                }
        }
-
 error_unlock:
-       rcu_read_unlock();
 
 error:
        return;
@@ -393,7 +394,7 @@ static int consumer_channel_timer_start(timer_t *timer_id,
        its.it_interval.tv_sec = its.it_value.tv_sec;
        its.it_interval.tv_nsec = its.it_value.tv_nsec;
 
-       ret = timer_settime(*timer_id, 0, &its, NULL);
+       ret = timer_settime(*timer_id, 0, &its, nullptr);
        if (ret == -1) {
                PERROR("timer_settime");
                goto error_destroy_timer;
@@ -419,7 +420,7 @@ static int consumer_channel_timer_stop(timer_t *timer_id, int signal)
        }
 
        consumer_timer_signal_thread_qs(signal);
-       *timer_id = 0;
+       *timer_id = nullptr;
 end:
        return ret;
 }
@@ -529,7 +530,7 @@ int consumer_timer_monitor_stop(struct lttng_consumer_channel *channel)
 
        ret = consumer_channel_timer_stop(&channel->monitor_timer, LTTNG_CONSUMER_SIG_MONITOR);
        if (ret == -1) {
-               ERR("Failed to stop live timer");
+               ERR("Failed to stop monitor timer");
                goto end;
        }
 
@@ -542,14 +543,14 @@ end:
  * Block the RT signals for the entire process. It must be called from the
  * consumer main before creating the threads
  */
-int consumer_signal_init(void)
+int consumer_signal_init()
 {
        int ret;
        sigset_t mask;
 
        /* Block signal for entire process, so only our thread processes it. */
        setmask(&mask);
-       ret = pthread_sigmask(SIG_BLOCK, &mask, NULL);
+       ret = pthread_sigmask(SIG_BLOCK, &mask, nullptr);
        if (ret) {
                errno = ret;
                PERROR("pthread_sigmask");
@@ -575,7 +576,7 @@ static int sample_channel_positions(struct lttng_consumer_channel *channel,
 
        *_total_consumed = 0;
 
-       rcu_read_lock();
+       lttng::urcu::read_lock_guard read_lock;
 
        cds_lfht_for_each_entry_duplicate(ht->ht,
                                          ht->hash_fct(&channel->key, lttng_ht_seed),
@@ -633,7 +634,6 @@ static int sample_channel_positions(struct lttng_consumer_channel *channel,
        *_highest_use = high;
        *_lowest_use = low;
 end:
-       rcu_read_unlock();
        if (empty_channel) {
                ret = -1;
        }
@@ -716,7 +716,7 @@ void sample_and_send_channel_buffer_stats(struct lttng_consumer_channel *channel
        }
 }
 
-int consumer_timer_thread_get_channel_monitor_pipe(void)
+int consumer_timer_thread_get_channel_monitor_pipe()
 {
        return uatomic_read(&the_channel_monitor_pipe);
 }
@@ -761,7 +761,7 @@ void *consumer_timer_thread(void *data)
        setmask(&mask);
        CMM_STORE_SHARED(timer_signal.tid, pthread_self());
 
-       while (1) {
+       while (true) {
                health_code_update();
 
                health_poll_entry();
@@ -806,5 +806,5 @@ error_testpoint:
 end:
        health_unregister(health_consumerd);
        rcu_unregister_thread();
-       return NULL;
+       return nullptr;
 }
This page took 0.029363 seconds and 4 git commands to generate.