X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer%2Fconsumer-timer.cpp;h=133ec6c0eaaca52d6348241b5ca61e08556eb41c;hb=56047f5a23df5c2c583a102b8015bbec5a7da9f1;hp=fa496336d8643e84018e2ca286018b70078fad50;hpb=28ab034a2c3582d07d3423d2d746731f87d3969f;p=lttng-tools.git diff --git a/src/common/consumer/consumer-timer.cpp b/src/common/consumer/consumer-timer.cpp index fa496336d..133ec6c0e 100644 --- a/src/common/consumer/consumer-timer.cpp +++ b/src/common/consumer/consumer-timer.cpp @@ -14,16 +14,17 @@ #include #include #include +#include #include #include #include #include -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, @@ -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; } @@ -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; }