Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > media > main-src > by-pkgid > aadbe78a25743146bb784eee19f007c5 > files > 580

kvm-83-164.el5_5.9.src.rpm

From 82d68d44255b16658fb05ca84fc64b38445982a5 Mon Sep 17 00:00:00 2001
From: Yaniv Kamay <ykamay@redhat.com>
Date: Tue, 5 May 2009 14:15:02 +0300
Subject: [PATCH 15/15] spice: using term_printf_async for vdi log messages #495578

Hi,

Attaching patch that use term_printf_async() instead of term_vprintf()
for vdi log messages.
This patch include interface change so it will break compilation in
case  libspice < 0.3.0.

PS:
    In current imp of term_printf_async() it is impossible to show all
log messages. We need
    to add event mask option in command line.

Thanks,
Yaniv

>From 3657a76cdb835dfcf178a54d7a224f1bea5dfcba Mon Sep 17 00:00:00 2001
From: Yaniv Kamay <yaniv@qumranet.com>
Date: Tue, 5 May 2009 13:24:41 +0300
Subject: [PATCH] spice: using term_printf_async for vdi log messages #495578

Message-ID: <4A001FB6.4060205@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Bugzilla: 500263
RH-Upstream-status: not-applicable
Acked-by: Zachary Amsden <zamsden@redhat.com>
Acked-by: Arnon Gilboa <agilboa@redhat.com>
Acked-by: Yonit Halperin <yhalperi@redhat.com>
---
 qemu/audio/vd_interface_audio.c |   12 ++++++------
 qemu/configure                  |    2 +-
 qemu/console.h                  |    3 ++-
 qemu/hw/ps2.c                   |   12 ++++++------
 qemu/hw/qxl.c                   |   12 ++++++------
 qemu/hw/usb-hid.c               |    6 +++---
 qemu/interface.c                |   14 +++++++++++++-
 qemu/migration-tcp.c            |    6 +++---
 qemu/monitor.c                  |   20 +++++++++++++-------
 9 files changed, 53 insertions(+), 34 deletions(-)

diff --git a/qemu/audio/vd_interface_audio.c b/qemu/audio/vd_interface_audio.c
index 5ac911d..b8135de 100644
--- a/qemu/audio/vd_interface_audio.c
+++ b/qemu/audio/vd_interface_audio.c
@@ -213,12 +213,12 @@ static void regitser_playback(void)
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_PLAYBACK;
     interface->base.id = playback_interface_id++;
     interface->base.description = "playback";
-    interface->base.major_vertion = VD_INTERFACE_PLAYBACK_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_PLAYBACK_MINOR;
+    interface->base.major_version = VD_INTERFACE_PLAYBACK_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_PLAYBACK_MINOR;
 
     interface->plug = interface_play_plug;
     interface->unplug = interface_play_unplug;
@@ -252,12 +252,12 @@ static void regitser_record(void)
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_RECORD;
     interface->base.id = record_interface_id++;
     interface->base.description = "record";
-    interface->base.major_vertion = VD_INTERFACE_RECORD_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_RECORD_MINOR;
+    interface->base.major_version = VD_INTERFACE_RECORD_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_RECORD_MINOR;
 
     interface->plug = interface_record_plug;
     interface->unplug = interface_record_unplug;
diff --git a/qemu/configure b/qemu/configure
index 554146b..a9fba9b 100755
--- a/qemu/configure
+++ b/qemu/configure
@@ -1150,7 +1150,7 @@ fi
 ##########################################
 # spice probe
 if test "$spice" = "yes" ; then
-  `pkg-config --atleast-version=0.2.0 spice` || spice="no"
+  `pkg-config --atleast-version=0.3.0 spice` || spice="no"
 fi
 if test "$spice" = "yes" ; then
   cat > $TMPC << EOF
diff --git a/qemu/console.h b/qemu/console.h
index b802779..d2d1eeb 100644
--- a/qemu/console.h
+++ b/qemu/console.h
@@ -195,7 +195,8 @@ extern uint8_t _translate_keycode(const int key);
 #define REBOOT_ASYNC_EVENT 5
 #define VMSTOP_ASYNC_EVENT 6
 #define WATERMARK_ASYNC_EVENT 7
-#define MAX_ASYNC_EVENT  WATERMARK_ASYNC_EVENT
+#define VDI_ASYNC_EVENT 8
+#define MAX_ASYNC_EVENT VDI_ASYNC_EVENT
 
 /* FIXME: term_printf et al should probably go elsewhere so everything
    does not need to include console.h  */
diff --git a/qemu/hw/ps2.c b/qemu/hw/ps2.c
index 405b9c3..5a9ffde 100644
--- a/qemu/hw/ps2.c
+++ b/qemu/hw/ps2.c
@@ -731,12 +731,12 @@ static void regitser_keyboard(PS2KbdState *s)
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->vd_interface.base.base_vertion = VM_INTERFACE_VERTION;
+    interface->vd_interface.base.base_version = VM_INTERFACE_VERSION;
     interface->vd_interface.base.type = VD_INTERFACE_KEYBOARD;
     interface->vd_interface.base.id = ++keyboard_interface_id;
     interface->vd_interface.base.description = "ps2 keyboard";
-    interface->vd_interface.base.major_vertion = VD_INTERFACE_KEYBOARD_MAJOR;
-    interface->vd_interface.base.minor_vertion = VD_INTERFACE_KEYBOARD_MINOR;
+    interface->vd_interface.base.major_version = VD_INTERFACE_KEYBOARD_MAJOR;
+    interface->vd_interface.base.minor_version = VD_INTERFACE_KEYBOARD_MINOR;
     interface->vd_interface.push_scan_freg = interface_push_scan_freg;
     interface->vd_interface.get_leds = interface_get_leds;
     interface->vd_interface.register_leds_notifier = interface_register_leds_notifier;
@@ -771,12 +771,12 @@ static void regitser_mouse(PS2MouseState *s)
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->vd_interface.base.base_vertion = VM_INTERFACE_VERTION;
+    interface->vd_interface.base.base_version = VM_INTERFACE_VERSION;
     interface->vd_interface.base.type = VD_INTERFACE_MOUSE;
     interface->vd_interface.base.id = mouse_interface_id++;
     interface->vd_interface.base.description = "ps2 mouse";
-    interface->vd_interface.base.major_vertion = VD_INTERFACE_MOUSE_MAJOR;
-    interface->vd_interface.base.minor_vertion = VD_INTERFACE_MOUSE_MINOR;
+    interface->vd_interface.base.major_version = VD_INTERFACE_MOUSE_MAJOR;
+    interface->vd_interface.base.minor_version = VD_INTERFACE_MOUSE_MINOR;
 
     interface->vd_interface.moution = interface_moution;
     interface->vd_interface.buttons = interface_buttons;
diff --git a/qemu/hw/qxl.c b/qemu/hw/qxl.c
index e61d3ed..0101cd0 100644
--- a/qemu/hw/qxl.c
+++ b/qemu/hw/qxl.c
@@ -837,12 +837,12 @@ static void vdi_port_register_interface(PCIVDIPortDevice *d)
         return;
     }
     
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_VDI_PORT;
     interface->base.id = ++interface_id;
     interface->base.description = "vdi port";
-    interface->base.major_vertion = VD_INTERFACE_VDI_PORT_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_VDI_PORT_MINOR;
+    interface->base.major_version = VD_INTERFACE_VDI_PORT_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_VDI_PORT_MINOR;
 
     interface->plug = vdi_port_interface_plug;
     interface->unplug = vdi_port_interface_unplug;
@@ -1650,12 +1650,12 @@ static void regitser_interface(PCIQXLDevice *d)
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->vd_interface.base.base_vertion = VM_INTERFACE_VERTION;
+    interface->vd_interface.base.base_version = VM_INTERFACE_VERSION;
     interface->vd_interface.base.type = VD_INTERFACE_QXL;
     interface->vd_interface.base.id = d->id;
     interface->vd_interface.base.description = "QXL GPU";
-    interface->vd_interface.base.major_vertion = VD_INTERFACE_QXL_MAJOR;
-    interface->vd_interface.base.minor_vertion = VD_INTERFACE_QXL_MINOR;
+    interface->vd_interface.base.major_version = VD_INTERFACE_QXL_MAJOR;
+    interface->vd_interface.base.minor_version = VD_INTERFACE_QXL_MINOR;
 
     interface->vd_interface.pci_vendor = QUMRANET_PCI_VENDOR_ID;
     interface->vd_interface.pci_id = QXL_DEVICE_ID;
diff --git a/qemu/hw/usb-hid.c b/qemu/hw/usb-hid.c
index b23de50..46e0a4c 100644
--- a/qemu/hw/usb-hid.c
+++ b/qemu/hw/usb-hid.c
@@ -595,12 +595,12 @@ static void regitser_tablet(USBMouseState *s)
     TabletInterface *interface = &s->interface;
     static int tablet_interface_id = 0;
     
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_TABLET;
     interface->base.id = ++tablet_interface_id;
     interface->base.description = "usb tablet";
-    interface->base.major_vertion = VD_INTERFACE_TABLET_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_TABLET_MINOR;
+    interface->base.major_version = VD_INTERFACE_TABLET_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_TABLET_MINOR;
 
 
     interface->set_logical_size = interface_set_logical_size;
diff --git a/qemu/interface.c b/qemu/interface.c
index b6949d1..1eaf0b6 100644
--- a/qemu/interface.c
+++ b/qemu/interface.c
@@ -219,8 +219,18 @@ static void core_term_printf(CoreInterface *core, const char* format, ...)
     va_end(ap);
 }
 
+static void core_log(CoreInterface *core, LogLevel level, const char* componnent, const char* format, ...)
+{
+    char message[2048];
+    va_list ap;
+    va_start(ap, format);
+    vsnprintf(message, sizeof(message), format, ap);
+    va_end(ap);
+    term_printf_async(VDI_ASYNC_EVENT, "%s: %s\n", componnent, message);
+}
+
 CoreInterface core_interface = {
-    {VM_INTERFACE_VERTION, VD_INTERFACE_CORE, 0, "qwnu core services", VD_INTERFACE_CORE_MAJOR, VD_INTERFACE_CORE_MINOR},
+    {VM_INTERFACE_VERSION, VD_INTERFACE_CORE, 0, "qwnu core services", VD_INTERFACE_CORE_MINOR, VD_INTERFACE_CORE_MAJOR},
     core_next,
     core_register_change_notifiers,
     core_unregister_change_notifiers,
@@ -230,4 +240,6 @@ CoreInterface core_interface = {
     core_destroy_timer,
     core_set_file_handlers,
     core_term_printf,
+    core_log,
 };
+
diff --git a/qemu/migration-tcp.c b/qemu/migration-tcp.c
index b1d4656..485c4e8 100644
--- a/qemu/migration-tcp.c
+++ b/qemu/migration-tcp.c
@@ -716,12 +716,12 @@ void tcp_migration_register_interface()
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_MIGRATION;
     interface->base.id = 0;
     interface->base.description = "qemue migration";
-    interface->base.major_vertion = VD_INTERFACE_MIGRATION_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_MIGRATION_MINOR;
+    interface->base.major_version = VD_INTERFACE_MIGRATION_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_MIGRATION_MINOR;
     interface->register_notifiers = interface_register_notifiers;
     interface->unregister_notifiers = interface_unregister_notifiers;
     interface->notifier_done = interface_notifier_done;
diff --git a/qemu/monitor.c b/qemu/monitor.c
index 35e8cda..2bf8e78 100644
--- a/qemu/monitor.c
+++ b/qemu/monitor.c
@@ -261,13 +261,19 @@ static void do_notify_async_events(char *event_str, char *enable)
         event = VMSTOP_ASYNC_EVENT;
     else if (!strcmp(event_str, "watermark"))
         event = WATERMARK_ASYNC_EVENT;
-    else
+    else if (!strcmp(event_str, "vdi"))
+        event = VDI_ASYNC_EVENT;
+    else {
+        term_printf("notify: invalid event %s\n", event_str);
         return;
+    }
 
     if (!strcmp(enable, "on"))
         async_printable_events[event] = 1;
-    else
+    else if (!strcmp(enable, "off"))
         async_printable_events[event] = 0;
+    else
+        term_printf("notify: invalid argument\n");
 }
 
 static void do_commit(const char *device)
@@ -1642,7 +1648,7 @@ static term_cmd_t term_cmds[] = {
     { "set_qxl_log_level", "i", qxl_do_set_log_level, "", "set qxl log level" },
 #endif
     { "notify", "ss", do_notify_async_events,
-      "vnc|rtc|migration|reboot|shutdown|vmstop|watermark on|off",
+      "vnc|rtc|migration|reboot|shutdown|vmstop|watermark|vdi on|off",
       "enable / disable printing of notifications for the specified event" },
     { "block_set_watermark", "Bi", do_block_set_watermark,
       "block-device offset(in MB)",
@@ -2901,7 +2907,7 @@ static void monitor_remove_info(QTermInterface *term, VDObjectRef command_ref)
     remove_command((term_cmd_t *)command_ref, &info_commands);
 }
 
-static void regitser_interface()
+static void regitser_interface(void)
 {
     QTermInterface *interface = (QTermInterface *)qemu_mallocz(sizeof(*interface));
 
@@ -2909,12 +2915,12 @@ static void regitser_interface()
         printf("%s: malloc failed\n", __FUNCTION__);
         exit(-1);
     }
-    interface->base.base_vertion = VM_INTERFACE_VERTION;
+    interface->base.base_version = VM_INTERFACE_VERSION;
     interface->base.type = VD_INTERFACE_QTERM;
     interface->base.id = 0;
     interface->base.description = "qemue terminal";
-    interface->base.major_vertion = VD_INTERFACE_QTERM_MAJOR;
-    interface->base.minor_vertion = VD_INTERFACE_QTERM_MINOR;
+    interface->base.major_version = VD_INTERFACE_QTERM_MAJOR;
+    interface->base.minor_version = VD_INTERFACE_QTERM_MINOR;
     interface->add_action_command_handler = monitor_add_action_command;
     interface->remove_action_command_handler = monitor_remove_action;
     interface->add_info_command_handler = monitor_add_info_command;
-- 
1.6.3.rc4.29.g8146