void *ret;
struct lttng_thread *thread = (struct lttng_thread *) data;
- DBG("Launching \"%s\" thread", thread->name);
+ logger_set_thread_name(thread->name, true);
+ DBG("Entering thread entry point");
ret = thread->entry(thread->data);
- DBG("Thread \"%s\" has returned", thread->name);
+ DBG("Thread entry point has returned");
return ret;
}
result = false;
goto end;
}
- /* Release the list's reference to the thread. */
- cds_list_del(&thread->node);
- lttng_thread_put(thread);
+ DBG("Joined thread \"%s\"", thread->name);
end:
return result;
}
bool lttng_thread_shutdown(struct lttng_thread *thread)
{
- bool result;
-
- pthread_mutex_lock(&thread_list.lock);
- result = _lttng_thread_shutdown(thread);
- pthread_mutex_unlock(&thread_list.lock);
+ const bool result = _lttng_thread_shutdown(thread);
+
+ if (result) {
+ /* Release the list's reference to the thread. */
+ pthread_mutex_lock(&thread_list.lock);
+ cds_list_del(&thread->node);
+ lttng_thread_put(thread);
+ pthread_mutex_unlock(&thread_list.lock);
+ }
return result;
}