X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng-sessiond%2Frotation-thread.cpp;h=4a0865eb8940a4faec5bb288ac61e50e1bca79ad;hb=5e3b23be3e32286f21523711f6c0fdf5b482a554;hp=7b0936f48fe70ffcb4607642d38f6dbc1ca96a98;hpb=28ab034a2c3582d07d3423d2d746731f87d3969f;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/rotation-thread.cpp b/src/bin/lttng-sessiond/rotation-thread.cpp index 7b0936f48..4a0865eb8 100644 --- a/src/bin/lttng-sessiond/rotation-thread.cpp +++ b/src/bin/lttng-sessiond/rotation-thread.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -42,7 +43,7 @@ #include #include -struct lttng_notification_channel *rotate_notification_channel = NULL; +struct lttng_notification_channel *rotate_notification_channel = nullptr; struct rotation_thread { struct lttng_poll_event events; @@ -87,9 +88,9 @@ static const char *get_job_type_str(enum rotation_thread_job_type job_type) } } -struct rotation_thread_timer_queue *rotation_thread_timer_queue_create(void) +struct rotation_thread_timer_queue *rotation_thread_timer_queue_create() { - struct rotation_thread_timer_queue *queue = NULL; + struct rotation_thread_timer_queue *queue = nullptr; queue = zmalloc(); if (!queue) { @@ -99,7 +100,7 @@ struct rotation_thread_timer_queue *rotation_thread_timer_queue_create(void) queue->event_pipe = lttng_pipe_open(FD_CLOEXEC | O_NONBLOCK); CDS_INIT_LIST_HEAD(&queue->list); - pthread_mutex_init(&queue->lock, NULL); + pthread_mutex_init(&queue->lock, nullptr); end: return queue; } @@ -150,7 +151,7 @@ end: return handle; error: rotation_thread_handle_destroy(handle); - return NULL; + return nullptr; } /* @@ -180,7 +181,7 @@ void rotation_thread_enqueue_job(struct rotation_thread_timer_queue *queue, { int ret; const char dummy = '!'; - struct rotation_thread_job *job = NULL; + struct rotation_thread_job *job = nullptr; const char *job_type_str = get_job_type_str(job_type); pthread_mutex_lock(&queue->lock); @@ -318,6 +319,7 @@ static void check_session_rotation_pending_on_consumers(struct ltt_session *sess uint64_t relayd_id; bool chunk_exists_on_peer = false; enum lttng_trace_chunk_status chunk_status; + lttng::urcu::read_lock_guard read_lock; LTTNG_ASSERT(session->chunk_being_archived); @@ -325,10 +327,10 @@ static void check_session_rotation_pending_on_consumers(struct ltt_session *sess * Check for a local pending rotation on all consumers (32-bit * user space, 64-bit user space, and kernel). */ - rcu_read_lock(); if (!session->ust_session) { goto skip_ust; } + cds_lfht_for_each_entry ( session->ust_session->consumer->socks->ht, &iter, socket, node.node) { relayd_id = session->ust_session->consumer->type == CONSUMER_DST_LOCAL ? @@ -386,7 +388,6 @@ skip_ust: } skip_kernel: end: - rcu_read_unlock(); if (!chunk_exists_on_peer) { uint64_t chunk_being_archived_id; @@ -460,7 +461,7 @@ check_session_rotation_pending(struct ltt_session *session, * rotations can start now. */ chunk_status = lttng_trace_chunk_get_name( - session->chunk_being_archived, &archived_chunk_name, NULL); + session->chunk_being_archived, &archived_chunk_name, nullptr); LTTNG_ASSERT(chunk_status == LTTNG_TRACE_CHUNK_STATUS_OK); free(session->last_archived_chunk_name); session->last_archived_chunk_name = strdup(archived_chunk_name); @@ -609,7 +610,7 @@ static int handle_condition(const struct lttng_notification *notification, struct notification_thread_handle *notification_thread_handle) { int ret = 0; - const char *condition_session_name = NULL; + const char *condition_session_name = nullptr; enum lttng_condition_type condition_type; enum lttng_condition_status condition_status; enum lttng_evaluation_status evaluation_status; @@ -673,7 +674,7 @@ static int handle_condition(const struct lttng_notification *notification, } ret = cmd_rotate_session( - session, NULL, false, LTTNG_TRACE_CHUNK_COMMAND_TYPE_MOVE_TO_COMPLETED); + session, nullptr, false, LTTNG_TRACE_CHUNK_COMMAND_TYPE_MOVE_TO_COMPLETED); switch (ret) { case LTTNG_OK: break; @@ -714,7 +715,7 @@ static int handle_notification_channel(int fd __attribute__((unused)), { int ret; bool notification_pending; - struct lttng_notification *notification = NULL; + struct lttng_notification *notification = nullptr; enum lttng_notification_channel_status status; status = lttng_notification_channel_has_pending_notification(rotate_notification_channel, @@ -862,7 +863,7 @@ end: health_unregister(the_health_sessiond); rcu_thread_offline(); rcu_unregister_thread(); - return NULL; + return nullptr; } static bool shutdown_rotation_thread(void *thread_data) @@ -878,7 +879,7 @@ bool launch_rotation_thread(struct rotation_thread_handle *handle) struct lttng_thread *thread; thread = lttng_thread_create( - "Rotation", thread_rotation, shutdown_rotation_thread, NULL, handle); + "Rotation", thread_rotation, shutdown_rotation_thread, nullptr, handle); if (!thread) { goto error; }