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