From e9af0e4ef8a079d4553a2a992cae2a821263eac1 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sat, 2 Oct 2021 13:44:50 +0200 Subject: [PATCH] log: add topic for data and thread loop --- src/pipewire/data-loop.c | 33 +++++++++++++++++---------------- src/pipewire/log.c | 4 ++++ src/pipewire/thread-loop.c | 36 +++++++++++++++++++----------------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/src/pipewire/data-loop.c b/src/pipewire/data-loop.c index 42e570928..2651cbdf5 100644 --- a/src/pipewire/data-loop.c +++ b/src/pipewire/data-loop.c @@ -31,7 +31,8 @@ #include "pipewire/private.h" #include "pipewire/thread.h" -#define NAME "data-loop" +PW_LOG_TOPIC_EXTERN(log_data_loop); +#define PW_LOG_TOPIC_DEFAULT log_data_loop SPA_EXPORT int pw_data_loop_wait(struct pw_data_loop *this, int timeout) @@ -61,7 +62,7 @@ void pw_data_loop_exit(struct pw_data_loop *this) static void thread_cleanup(void *arg) { struct pw_data_loop *this = arg; - pw_log_debug(NAME" %p: leave thread", this); + pw_log_debug("%p: leave thread", this); this->running = false; pw_loop_leave(this->loop); } @@ -71,7 +72,7 @@ static void *do_loop(void *user_data) struct pw_data_loop *this = user_data; int res; - pw_log_debug(NAME" %p: enter thread", this); + pw_log_debug("%p: enter thread", this); pw_loop_enter(this->loop); pthread_cleanup_push(thread_cleanup, this); @@ -80,7 +81,7 @@ static void *do_loop(void *user_data) if ((res = pw_loop_iterate(this->loop, -1)) < 0) { if (res == -EINTR) continue; - pw_log_error(NAME" %p: iterate error %d (%s)", + pw_log_error("%p: iterate error %d (%s)", this, res, spa_strerror(res)); } } @@ -92,7 +93,7 @@ static void *do_loop(void *user_data) static void do_stop(void *data, uint64_t count) { struct pw_data_loop *this = data; - pw_log_debug(NAME" %p: stopping", this); + pw_log_debug("%p: stopping", this); this->running = false; } @@ -108,7 +109,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict goto error_cleanup; } - pw_log_debug(NAME" %p: new", this); + pw_log_debug("%p: new", this); if (loop == NULL) { loop = pw_loop_new(props); @@ -116,7 +117,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict } if (loop == NULL) { res = -errno; - pw_log_error(NAME" %p: can't create loop: %m", this); + pw_log_error("%p: can't create loop: %m", this); goto error_free; } this->loop = loop; @@ -127,7 +128,7 @@ static struct pw_data_loop *loop_new(struct pw_loop *loop, const struct spa_dict this->event = pw_loop_add_event(this->loop, do_stop, this); if (this->event == NULL) { res = -errno; - pw_log_error(NAME" %p: can't add event: %m", this); + pw_log_error("%p: can't add event: %m", this); goto error_loop_destroy; } } @@ -162,7 +163,7 @@ struct pw_data_loop *pw_data_loop_new(const struct spa_dict *props) SPA_EXPORT void pw_data_loop_destroy(struct pw_data_loop *loop) { - pw_log_debug(NAME" %p: destroy", loop); + pw_log_debug("%p: destroy", loop); pw_data_loop_emit_destroy(loop); @@ -211,7 +212,7 @@ int pw_data_loop_start(struct pw_data_loop *loop) thr = pw_thread_utils_create(NULL, do_loop, loop); loop->thread = (pthread_t)thr; if (thr == NULL) { - pw_log_error(NAME" %p: can't create thread: %m", loop); + pw_log_error("%p: can't create thread: %m", loop); loop->running = false; return -errno; } @@ -229,20 +230,20 @@ int pw_data_loop_start(struct pw_data_loop *loop) SPA_EXPORT int pw_data_loop_stop(struct pw_data_loop *loop) { - pw_log_debug(NAME": %p stopping", loop); + pw_log_debug("%p stopping", loop); if (loop->running) { if (loop->event) { - pw_log_debug(NAME": %p signal", loop); + pw_log_debug("%p signal", loop); pw_loop_signal_event(loop->loop, loop->event); } else { - pw_log_debug(NAME": %p cancel", loop); + pw_log_debug("%p cancel", loop); pthread_cancel(loop->thread); } - pw_log_debug(NAME": %p join", loop); + pw_log_debug("%p join", loop); pw_thread_utils_join((struct spa_thread*)loop->thread, NULL); - pw_log_debug(NAME": %p joined", loop); + pw_log_debug("%p joined", loop); } - pw_log_debug(NAME": %p stopped", loop); + pw_log_debug("%p stopped", loop); return 0; } diff --git a/src/pipewire/log.c b/src/pipewire/log.c index 3638fe365..2486f982e 100644 --- a/src/pipewire/log.c +++ b/src/pipewire/log.c @@ -51,6 +51,7 @@ PW_LOG_TOPIC_STATIC(log_topic, "pw.log"); /* log topic for this file here */ PW_LOG_TOPIC(log_buffers, "pw.buffers"); PW_LOG_TOPIC(log_conf, "pw.conf"); PW_LOG_TOPIC(log_context, "pw.context"); +PW_LOG_TOPIC(log_data_loop, "pw.data-loop"); PW_LOG_TOPIC(log_metadata, "pw.metadata"); PW_LOG_TOPIC(log_node, "pw.node"); PW_LOG_TOPIC(log_port, "pw.port"); @@ -63,6 +64,7 @@ PW_LOG_TOPIC(log_factory, "pw.factory"); PW_LOG_TOPIC(log_module, "pw.module"); PW_LOG_TOPIC(log_device, "pw.device"); PW_LOG_TOPIC(log_resource, "pw.resource"); +PW_LOG_TOPIC(log_thread_loop, "pw.thread-loop"); PW_LOG_TOPIC(PW_LOG_TOPIC_DEFAULT, "default"); @@ -420,6 +422,7 @@ pw_log_init(void) PW_LOG_TOPIC_INIT(PW_LOG_TOPIC_DEFAULT); PW_LOG_TOPIC_INIT(log_buffers); PW_LOG_TOPIC_INIT(log_conf); + PW_LOG_TOPIC_INIT(log_data_loop); PW_LOG_TOPIC_INIT(log_topic); PW_LOG_TOPIC_INIT(log_context); PW_LOG_TOPIC_INIT(log_metadata); @@ -434,4 +437,5 @@ pw_log_init(void) PW_LOG_TOPIC_INIT(log_module); PW_LOG_TOPIC_INIT(log_device); PW_LOG_TOPIC_INIT(log_resource); + PW_LOG_TOPIC_INIT(log_thread_loop); } diff --git a/src/pipewire/thread-loop.c b/src/pipewire/thread-loop.c index c4bc95c24..31133bd12 100644 --- a/src/pipewire/thread-loop.c +++ b/src/pipewire/thread-loop.c @@ -31,7 +31,9 @@ #include "log.h" #include "thread-loop.h" -#define NAME "thread-loop" +PW_LOG_TOPIC_EXTERN(log_thread_loop); +#define PW_LOG_TOPIC_DEFAULT log_thread_loop + #define pw_thread_loop_events_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_thread_loop_events, m, v, ##__VA_ARGS__) #define pw_thread_loop_events_destroy(o) pw_thread_loop_events_emit(o, destroy, 0) @@ -118,7 +120,7 @@ static struct pw_thread_loop *loop_new(struct pw_loop *loop, if (this == NULL) return NULL; - pw_log_debug(NAME" %p: new name:%s", this, name); + pw_log_debug("%p: new name:%s", this, name); if (loop == NULL) { loop = pw_loop_new(props); @@ -253,18 +255,18 @@ static void *do_loop(void *user_data) int res; pthread_mutex_lock(&this->lock); - pw_log_debug(NAME" %p: enter thread", this); + pw_log_debug("%p: enter thread", this); pw_loop_enter(this->loop); while (this->running) { if ((res = pw_loop_iterate(this->loop, -1)) < 0) { if (res == -EINTR) continue; - pw_log_warn(NAME" %p: iterate error %d (%s)", + pw_log_warn("%p: iterate error %d (%s)", this, res, spa_strerror(res)); } } - pw_log_debug(NAME" %p: leave thread", this); + pw_log_debug("%p: leave thread", this); pw_loop_leave(this->loop); pthread_mutex_unlock(&this->lock); @@ -285,13 +287,13 @@ int pw_thread_loop_start(struct pw_thread_loop *loop) loop->running = true; if ((err = pthread_create(&loop->thread, NULL, do_loop, loop)) != 0) { - pw_log_warn(NAME" %p: can't create thread: %s", loop, + pw_log_warn("%p: can't create thread: %s", loop, strerror(err)); loop->running = false; return -err; } if ((err = pthread_setname_np(loop->thread, loop->name)) != 0) - pw_log_warn(NAME" %p: error: %s", loop, strerror(err)); + pw_log_warn("%p: error: %s", loop, strerror(err)); } return 0; } @@ -304,16 +306,16 @@ int pw_thread_loop_start(struct pw_thread_loop *loop) SPA_EXPORT void pw_thread_loop_stop(struct pw_thread_loop *loop) { - pw_log_debug(NAME": %p stopping %d", loop, loop->running); + pw_log_debug("%p stopping %d", loop, loop->running); if (loop->running) { - pw_log_debug(NAME": %p signal", loop); + pw_log_debug("%p signal", loop); pw_loop_signal_event(loop->loop, loop->event); - pw_log_debug(NAME": %p join", loop); + pw_log_debug("%p join", loop); pthread_join(loop->thread, NULL); - pw_log_debug(NAME": %p joined", loop); + pw_log_debug("%p joined", loop); loop->running = false; } - pw_log_debug(NAME": %p stopped", loop); + pw_log_debug("%p stopped", loop); } /** Lock the mutex associated with \a loop @@ -325,7 +327,7 @@ SPA_EXPORT void pw_thread_loop_lock(struct pw_thread_loop *loop) { pthread_mutex_lock(&loop->lock); - pw_log_trace(NAME": %p", loop); + pw_log_trace("%p", loop); } /** Unlock the mutex associated with \a loop @@ -336,7 +338,7 @@ void pw_thread_loop_lock(struct pw_thread_loop *loop) SPA_EXPORT void pw_thread_loop_unlock(struct pw_thread_loop *loop) { - pw_log_trace(NAME": %p", loop); + pw_log_trace("%p", loop); pthread_mutex_unlock(&loop->lock); } @@ -352,7 +354,7 @@ void pw_thread_loop_unlock(struct pw_thread_loop *loop) SPA_EXPORT void pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept) { - pw_log_trace(NAME": %p, waiting:%d accept:%d", + pw_log_trace("%p, waiting:%d accept:%d", loop, loop->n_waiting, wait_for_accept); if (loop->n_waiting > 0) pthread_cond_broadcast(&loop->cond); @@ -373,11 +375,11 @@ void pw_thread_loop_signal(struct pw_thread_loop *loop, bool wait_for_accept) SPA_EXPORT void pw_thread_loop_wait(struct pw_thread_loop *loop) { - pw_log_trace(NAME": %p, waiting %d", loop, loop->n_waiting); + pw_log_trace("%p, waiting %d", loop, loop->n_waiting); loop->n_waiting++; pthread_cond_wait(&loop->cond, &loop->lock); loop->n_waiting--; - pw_log_trace(NAME": %p, waiting done %d", loop, loop->n_waiting); + pw_log_trace("%p, waiting done %d", loop, loop->n_waiting); } /** Wait for the loop thread to call \ref pw_thread_loop_signal()