From a7e5469d71781c6269689aa607bd4629ef4fd352 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 19 May 2009 15:41:04 +0100 Subject: [PATCH] qemu xen upstream synch (Gerd): [PATCH 5/7] logging fixups. Use new logging API. Kill a few fprintf(stderr, "...") calls. [This is] a series of patches for qemu-xen, making the code identical to the xen support patches being submitted to upstream qemu. The review process on qemu-devel resulted in a number of fixes and cleanups in the backend code, this is where most of the changes come from. There are also some xenfb changes due to displaystate reorganization and xenfb being merged in steps due to that. Signed-off-by: Gerd Hoffmann --- hw/xen_backend.c | 42 +++++++++++++++++++++++++++++------------- hw/xen_console.c | 6 ------ hw/xenfb.c | 15 +++++++-------- 3 files changed, 36 insertions(+), 27 deletions(-) diff --git a/hw/xen_backend.c b/hw/xen_backend.c index bb02634c0..2f2ec7ffe 100644 --- a/hw/xen_backend.c +++ b/hw/xen_backend.c @@ -209,7 +209,7 @@ static struct XenDevice *xen_be_get_xendev(const char *type, int dom, int dev, xendev->evtchndev = xc_evtchn_open(); if (xendev->evtchndev < 0) { - fprintf(stderr, "can't open evtchn device\n"); + xen_be_printf(NULL, 0, "can't open evtchn device\n"); qemu_free(xendev); return NULL; } @@ -218,7 +218,7 @@ static struct XenDevice *xen_be_get_xendev(const char *type, int dom, int dev, if (ops->flags & DEVOPS_FLAG_NEED_GNTDEV) { xendev->gnttabdev = xc_gnttab_open(); if (xendev->gnttabdev < 0) { - fprintf(stderr, "can't open gnttab device\n"); + xen_be_printf(NULL, 0, "can't open gnttab device\n"); xc_evtchn_close(xendev->evtchndev); qemu_free(xendev); return NULL; @@ -511,7 +511,7 @@ static int xenstore_scan(const char *type, int dom, struct XenDevOps *ops) snprintf(path, sizeof(path), "%s/backend/%s/%d", dom0, type, dom); free(dom0); if (!xs_watch(xenstore, path, token)) { - fprintf(stderr, "xen be: watching backend path (%s) failed\n", path); + xen_be_printf(NULL, 0, "xen be: watching backend path (%s) failed\n", path); return -1; } @@ -620,7 +620,7 @@ int xen_be_init(void) { xenstore = xs_daemon_open(); if (!xenstore) { - fprintf(stderr, "can't connect to xenstored\n"); + xen_be_printf(NULL, 0, "can't connect to xenstored\n"); return -1; } @@ -629,7 +629,7 @@ int xen_be_init(void) xen_xc = xc_interface_open(); if (xen_xc == -1) { - fprintf(stderr, "can't open xen interface\n"); + xen_be_printf(NULL, 0, "can't open xen interface\n"); goto err; } return 0; @@ -680,19 +680,35 @@ int xen_be_send_notify(struct XenDevice *xendev) /* * msg_level: - * 0 == errors. - * 1 == informative debug messages. - * 2 == noisy debug messages. - * 3 == will flood your log. + * 0 == errors (stderr + logfile). + * 1 == informative debug messages (logfile only). + * 2 == noisy debug messages (logfile only). + * 3 == will flood your log (logfile only). */ void xen_be_printf(struct XenDevice *xendev, int msg_level, const char *fmt, ...) { va_list args; - if (msg_level > xendev->debug) - return; - fprintf(stderr, "xen be: %s: ", xendev->name); + if (xendev) { + if (msg_level > xendev->debug) + return; + qemu_log("xen be: %s: ", xendev->name); + if (msg_level == 0) + fprintf(stderr, "xen be: %s: ", xendev->name); + } else { + if (msg_level > debug) + return; + qemu_log("xen be core: "); + if (msg_level == 0) + fprintf(stderr, "xen be core: "); + } va_start(args, fmt); - vfprintf(stderr, fmt, args); + qemu_log_vprintf(fmt, args); va_end(args); + if (msg_level == 0) { + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); + } + qemu_log_flush(); } diff --git a/hw/xen_console.c b/hw/xen_console.c index 707075eef..27f809df6 100644 --- a/hw/xen_console.c +++ b/hw/xen_console.c @@ -38,8 +38,6 @@ #include "qemu-char.h" #include "xen_backend.h" -#define dolog(val, fmt, ...) fprintf(stderr, fmt "\n", ## __VA_ARGS__) - struct buffer { uint8_t *data; size_t consumed; @@ -75,10 +73,6 @@ static void buffer_append(struct XenConsole *con) if ((buffer->capacity - buffer->size) < size) { buffer->capacity += (size + 1024); buffer->data = qemu_realloc(buffer->data, buffer->capacity); - if (buffer->data == NULL) { - dolog(LOG_ERR, "Memory allocation failed"); - exit(ENOMEM); - } } while (cons != prod) diff --git a/hw/xenfb.c b/hw/xenfb.c index 1764ac2c1..d9e5c33db 100644 --- a/hw/xenfb.c +++ b/hw/xenfb.c @@ -813,15 +813,14 @@ static void xenfb_handle_events(struct XenFB *xenfb) w = MIN(event->update.width, xenfb->width - x); h = MIN(event->update.height, xenfb->height - y); if (w < 0 || h < 0) { - fprintf(stderr, "xen be: %s: bogus update ignored\n", - xenfb->c.xendev.name); + xen_be_printf(&xenfb->c.xendev, 1, "bogus update ignored\n"); break; } - if (x != event->update.x || y != event->update.y - || w != event->update.width - || h != event->update.height) { - fprintf(stderr, "xen be: %s: bogus update clipped\n", - xenfb->c.xendev.name); + if (x != event->update.x || + y != event->update.y || + w != event->update.width || + h != event->update.height) { + xen_be_printf(&xenfb->c.xendev, 1, "bogus update clipped\n"); } if (w == xenfb->width && h > xenfb->height / 2) { /* scroll detector: updated more than 50% of the lines, @@ -993,7 +992,7 @@ wait_more: if (!xfb || !xin) { if (i < 256) goto wait_more; - fprintf(stderr, "%s: displaystate setup failed\n", __FUNCTION__); + xen_be_printf(NULL, 1, "displaystate setup failed\n"); return; } -- 2.39.5