From af77bb577d21215167d388f908584d797cc3c303 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Sun, 6 Nov 2011 16:09:35 +0200 Subject: server: add prefix argument to red_printf_debug printed before function name. No central location for prefixes. Adding "WORKER", "ASYNC", "MAIN" since those were the current users. --- common/spice_common.h | 4 ++-- server/main_channel.c | 2 +- server/red_dispatcher.c | 17 ++++++++++++----- server/red_worker.c | 18 ++++++++++-------- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/common/spice_common.h b/common/spice_common.h index f6205a33..d13a94fd 100644 --- a/common/spice_common.h +++ b/common/spice_common.h @@ -65,13 +65,13 @@ } \ } while (0) -#define red_printf_debug(debug, format, ...) do { \ +#define red_printf_debug(debug, prefix, format, ...) do { \ static int debug_level = -1; \ if (debug_level == -1) { \ debug_level = getenv("SPICE_DEBUG_LEVEL") != NULL ? atoi(getenv("SPICE_DEBUG_LEVEL")) : 0; \ } \ if (debug <= debug_level) { \ - printf("%s: " format "\n", __FUNCTION__, ## __VA_ARGS__ ); \ + printf("%s: %s: " format "\n", prefix, __FUNCTION__, ## __VA_ARGS__ ); \ } \ } while(0) diff --git a/server/main_channel.c b/server/main_channel.c index b2439b29..24cdaeaf 100644 --- a/server/main_channel.c +++ b/server/main_channel.c @@ -695,7 +695,7 @@ static void main_channel_release_pipe_item(RedChannelClient *rcc, case SPICE_MSG_MAIN_AGENT_DATA: { AgentDataPipeItem *data = (AgentDataPipeItem*)base; if (!--data->refs->refs) { - red_printf_debug(1, "SPICE_MSG_MAIN_AGENT_DATA %p %p, %d", + red_printf_debug(1, "MAIN", "SPICE_MSG_MAIN_AGENT_DATA %p %p, %d", data, data->refs, data->refs->refs); free(data->refs); data->free_data(data->data, data->opaque); diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index c3cfa904..5257e6b4 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -44,6 +44,11 @@ static int num_active_workers = 0; //volatile +#define DBG_ASYNC(s, ...) \ + do { \ + red_printf_debug(2, "ASYNC", s, ##__VA_ARGS__); \ + } while (0); + struct AsyncCommand { RingItem link; RedWorkerMessage message; @@ -281,6 +286,7 @@ static AsyncCommand *async_command_alloc(RedDispatcher *dispatcher, async_command->message = message; ring_add(&dispatcher->async_commands, &async_command->link); pthread_mutex_unlock(&dispatcher->async_lock); + DBG_ASYNC("%p", async_command); return async_command; } @@ -385,7 +391,7 @@ red_dispatcher_destroy_primary_surface(RedDispatcher *dispatcher, uint32_t surface_id, int async, uint64_t cookie) { RedWorkerMessage message; - AsyncCommand *cmd; + AsyncCommand *cmd = NULL; if (async) { message = RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE_ASYNC; @@ -429,7 +435,7 @@ red_dispatcher_create_primary_surface(RedDispatcher *dispatcher, uint32_t surfac QXLDevSurfaceCreate *surface, int async, uint64_t cookie) { RedWorkerMessage message; - AsyncCommand *cmd; + AsyncCommand *cmd = NULL; if (async) { message = RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE_ASYNC; @@ -490,7 +496,7 @@ static void red_dispatcher_destroy_surface_wait(RedDispatcher *dispatcher, uint3 int async, uint64_t cookie) { RedWorkerMessage message; - AsyncCommand *cmd; + AsyncCommand *cmd = NULL; if (async ) { message = RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC; @@ -835,9 +841,9 @@ void red_dispatcher_async_complete(struct RedDispatcher *dispatcher, { pthread_mutex_lock(&dispatcher->async_lock); ring_remove(&async_command->link); - red_printf_debug(2, "%p: cookie %" PRId64, async_command, async_command->cookie); + DBG_ASYNC("%p: cookie %" PRId64, async_command, async_command->cookie); if (ring_is_empty(&dispatcher->async_commands)) { - red_printf_debug(2, "%s: no more async commands", __func__); + red_printf_debug(2, "ASYNC", "no more async commands"); } pthread_mutex_unlock(&dispatcher->async_lock); switch (async_command->message) { @@ -918,6 +924,7 @@ RedDispatcher *red_dispatcher_init(QXLInstance *qxl) dispatcher = spice_new0(RedDispatcher, 1); dispatcher->channel = channels[0]; ring_init(&dispatcher->async_commands); + DBG_ASYNC("dispatcher->async_commands.next %p", dispatcher->async_commands.next); init_data.qxl = dispatcher->qxl = qxl; init_data.id = qxl->id; init_data.channel = channels[1]; diff --git a/server/red_worker.c b/server/red_worker.c index a5c2df33..de8a8202 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -4778,9 +4778,9 @@ static void red_free_some(RedWorker *worker) DisplayChannelClient *dcc; RingItem *item; - red_printf_debug(3, "#draw=%d, #red_draw=%d, #glz_draw=%d", worker->drawable_count, - worker->red_drawable_count, - worker->glz_drawable_count); + red_printf_debug(3, "WORKER", + "#draw=%d, #red_draw=%d, #glz_draw=%d", worker->drawable_count, + worker->red_drawable_count, worker->glz_drawable_count); WORKER_FOREACH_DCC(worker, item, dcc) { GlzSharedDictionary *glz_dict = dcc ? dcc->glz_dict : NULL; @@ -8651,9 +8651,9 @@ static void display_channel_client_on_disconnect(RedChannelClient *rcc) if (!red_channel_is_connected(rcc->channel)) { red_display_destroy_compress_bufs(display_channel); } - red_printf_debug(3, "#draw=%d, #red_draw=%d, #glz_draw=%d", worker->drawable_count, - worker->red_drawable_count, - worker->glz_drawable_count); + red_printf_debug(3, "WORKER", "#draw=%d, #red_draw=%d, #glz_draw=%d", + worker->drawable_count, worker->red_drawable_count, + worker->glz_drawable_count); } void red_disconnect_all_display_TODO_remove_me(RedChannel *channel) @@ -10433,7 +10433,8 @@ static void handle_dev_input(EventListener *listener, uint32_t events) case RED_WORKER_MESSAGE_OOM: ASSERT(worker->running); // streams? but without streams also leak - red_printf_debug(1, "OOM1 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", + red_printf_debug(1, "WORKER", + "OOM1 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", worker->drawable_count, worker->red_drawable_count, worker->glz_drawable_count, @@ -10447,7 +10448,8 @@ static void handle_dev_input(EventListener *listener, uint32_t events) red_free_some(worker); worker->qxl->st->qif->flush_resources(worker->qxl); } - red_printf_debug(1, "OOM2 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", + red_printf_debug(1, "WORKER", + "OOM2 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", worker->drawable_count, worker->red_drawable_count, worker->glz_drawable_count, -- cgit