From patchwork Wed Aug 26 17:05:34 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Capitulino X-Patchwork-Id: 32183 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by bilbo.ozlabs.org (Postfix) with ESMTPS id E97E0B7B61 for ; Thu, 27 Aug 2009 04:00:55 +1000 (EST) Received: from localhost ([127.0.0.1]:43694 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MgMnh-0001uv-F3 for incoming@patchwork.ozlabs.org; Wed, 26 Aug 2009 14:00:49 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MgLxU-0003Xy-6t for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MgLxT-0003Wl-8v for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:51 -0400 Received: from [199.232.76.173] (port=45816 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MgLxS-0003Wa-SW for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:51 -0400 Received: from mx20.gnu.org ([199.232.41.8]:36707) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MgLxS-0000lU-6J for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MgLxR-00037q-A3 for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:49 -0400 Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n7QH6fbQ018462; Wed, 26 Aug 2009 13:06:41 -0400 Received: from localhost (vpn-10-90.bos.redhat.com [10.16.10.90]) by int-mx04.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n7QH6dHC031946; Wed, 26 Aug 2009 13:06:40 -0400 From: Luiz Capitulino To: qemu-devel@nongnu.org Date: Wed, 26 Aug 2009 14:05:34 -0300 Message-Id: <1251306352-31316-12-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1251306352-31316-1-git-send-email-lcapitulino@redhat.com> References: <1251306352-31316-1-git-send-email-lcapitulino@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.17 X-Detected-Operating-System: by mx20.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: aliguori@us.ibm.com, avi@redhat.com Subject: [Qemu-devel] [PATCH 11/29] monitor: Port handler_2 to use QDict X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org This commit ports command handlers that receive two arguments to use the new monitor's dictionary. Signed-off-by: Luiz Capitulino --- hw/pci-hotplug.c | 4 +++- migration.c | 4 +++- migration.h | 2 +- monitor.c | 23 +++++++++++++---------- net.c | 13 ++++++++++--- net.h | 7 ++++--- sysemu.h | 2 +- 7 files changed, 35 insertions(+), 20 deletions(-) diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c index 2a5b0f9..8355e66 100644 --- a/hw/pci-hotplug.c +++ b/hw/pci-hotplug.c @@ -48,7 +48,7 @@ static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon, return pci_nic_init(&nd_table[ret], "rtl8139", devaddr); } -void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts) +void drive_hot_add(Monitor *mon, const QDict *qdict) { int dom, pci_bus; unsigned slot; @@ -56,6 +56,8 @@ void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts) int success = 0; PCIDevice *dev; DriveInfo *dinfo; + const char *pci_addr = qdict_get_str(qdict, "pci_addr"); + const char *opts = qdict_get_str(qdict, "opts"); if (pci_read_devaddr(mon, pci_addr, &dom, &pci_bus, &slot)) { return; diff --git a/migration.c b/migration.c index 7d0a555..176f853 100644 --- a/migration.c +++ b/migration.c @@ -50,10 +50,12 @@ void qemu_start_incoming_migration(const char *uri) fprintf(stderr, "unknown migration protocol: %s\n", uri); } -void do_migrate(Monitor *mon, int detach, const char *uri) +void do_migrate(Monitor *mon, const QDict *qdict) { MigrationState *s = NULL; const char *p; + int detach = qdict_get_int(qdict, "detach"); + const char *uri = qdict_get_str(qdict, "uri"); if (strstart(uri, "tcp:", &p)) s = tcp_start_outgoing_migration(p, max_throttle, detach); diff --git a/migration.h b/migration.h index f86c0fd..2dd59e7 100644 --- a/migration.h +++ b/migration.h @@ -50,7 +50,7 @@ struct FdMigrationState void qemu_start_incoming_migration(const char *uri); -void do_migrate(Monitor *mon, int detach, const char *uri); +void do_migrate(Monitor *mon, const QDict *qdict); void do_migrate_cancel(Monitor *mon, const QDict *qdict); diff --git a/monitor.c b/monitor.c index c82fa31..5ba6d64 100644 --- a/monitor.c +++ b/monitor.c @@ -452,9 +452,11 @@ static int eject_device(Monitor *mon, BlockDriverState *bs, int force) return 0; } -static void do_eject(Monitor *mon, int force, const char *filename) +static void do_eject(Monitor *mon, const QDict *qdict) { BlockDriverState *bs; + int force = qdict_get_int(qdict, "force"); + const char *filename = qdict_get_str(qdict, "filename"); bs = bdrv_find(filename); if (!bs) { @@ -912,11 +914,13 @@ static void do_physical_memory_save(Monitor *mon, unsigned int valh, fclose(f); } -static void do_sum(Monitor *mon, uint32_t start, uint32_t size) +static void do_sum(Monitor *mon, const QDict *qdict) { uint32_t addr; uint8_t buf[1]; uint16_t sum; + uint32_t start = qdict_get_int(qdict, "start"); + uint32_t size = qdict_get_int(qdict, "size"); sum = 0; for(addr = start; addr < (start + size); addr++) { @@ -1600,9 +1604,10 @@ static void do_acl_reset(Monitor *mon, const QDict *qdict) } } -static void do_acl_policy(Monitor *mon, const char *aclname, - const char *policy) +static void do_acl_policy(Monitor *mon, const QDict *qdict) { + const char *aclname = qdict_get_str(qdict, "aclname"); + const char *policy = qdict_get_str(qdict, "policy"); qemu_acl *acl = find_acl(mon, aclname); if (acl) { @@ -1647,8 +1652,10 @@ static void do_acl_add(Monitor *mon, const char *aclname, } } -static void do_acl_remove(Monitor *mon, const char *aclname, const char *match) +static void do_acl_remove(Monitor *mon, const QDict *qdict) { + const char *aclname = qdict_get_str(qdict, "aclname"); + const char *match = qdict_get_str(qdict, "match"); qemu_acl *acl = find_acl(mon, aclname); int ret; @@ -2561,7 +2568,6 @@ static void monitor_handle_command(Monitor *mon, const char *cmdline) void *str_allocated[MAX_ARGS]; void *args[MAX_ARGS]; void (*handler_d)(Monitor *mon, const QDict *qdict); - void (*handler_2)(Monitor *mon, void *arg0, void *arg1); void (*handler_3)(Monitor *mon, void *arg0, void *arg1, void *arg2); void (*handler_4)(Monitor *mon, void *arg0, void *arg1, void *arg2, void *arg3); @@ -2853,13 +2859,10 @@ static void monitor_handle_command(Monitor *mon, const char *cmdline) switch(nb_args) { case 0: case 1: + case 2: handler_d = cmd->handler; handler_d(mon, qdict); break; - case 2: - handler_2 = cmd->handler; - handler_2(mon, args[0], args[1]); - break; case 3: handler_3 = cmd->handler; handler_3(mon, args[0], args[1], args[2]); diff --git a/net.c b/net.c index beba552..276be9d 100644 --- a/net.c +++ b/net.c @@ -2827,8 +2827,11 @@ static int net_host_check_device(const char *device) return 0; } -void net_host_device_add(Monitor *mon, const char *device, const char *opts) +void net_host_device_add(Monitor *mon, const QDict *qdict) { + const char *device = qdict_get_str(qdict, "device"); + const char *opts = qdict_get_try_str(qdict, "opts"); + if (!net_host_check_device(device)) { monitor_printf(mon, "invalid host network device %s\n", device); return; @@ -2838,9 +2841,11 @@ void net_host_device_add(Monitor *mon, const char *device, const char *opts) } } -void net_host_device_remove(Monitor *mon, int vlan_id, const char *device) +void net_host_device_remove(Monitor *mon, const QDict *qdict) { VLANClientState *vc; + int vlan_id = qdict_get_int(qdict, "vlan_id"); + const char *device = qdict_get_str(qdict, "device"); vc = qemu_find_vlan_client_by_name(mon, vlan_id, device); if (!vc) { @@ -2905,10 +2910,12 @@ void do_info_network(Monitor *mon) } } -void do_set_link(Monitor *mon, const char *name, const char *up_or_down) +void do_set_link(Monitor *mon, const QDict *qdict) { VLANState *vlan; VLANClientState *vc = NULL; + const char *name = qdict_get_str(qdict, "name"); + const char *up_or_down = qdict_get_str(qdict, "up_or_down"); for (vlan = first_vlan; vlan != NULL; vlan = vlan->next) for (vc = vlan->first_client; vc != NULL; vc = vc->next) diff --git a/net.h b/net.h index 3ac9e8c..e6fd3f8 100644 --- a/net.h +++ b/net.h @@ -2,6 +2,7 @@ #define QEMU_NET_H #include "qemu-common.h" +#include "qdict.h" /* VLANs support */ @@ -79,7 +80,7 @@ void qemu_check_nic_model_list(NICInfo *nd, const char * const *models, void qemu_handler_true(void *opaque); void do_info_network(Monitor *mon); -void do_set_link(Monitor *mon, const char *name, const char *up_or_down); +void do_set_link(Monitor *mon, const QDict *qdict); void do_info_usernet(Monitor *mon); @@ -144,8 +145,8 @@ void net_slirp_redir(const char *redir_str); void net_cleanup(void); void net_client_check(void); void net_set_boot_mask(int boot_mask); -void net_host_device_add(Monitor *mon, const char *device, const char *opts); -void net_host_device_remove(Monitor *mon, int vlan_id, const char *device); +void net_host_device_add(Monitor *mon, const QDict *qdict); +void net_host_device_remove(Monitor *mon, const QDict *qdict); #define DEFAULT_NETWORK_SCRIPT "/etc/qemu-ifup" #define DEFAULT_NETWORK_DOWN_SCRIPT "/etc/qemu-ifdown" diff --git a/sysemu.h b/sysemu.h index 7730703..22df5c1 100644 --- a/sysemu.h +++ b/sysemu.h @@ -210,7 +210,7 @@ void destroy_bdrvs(dev_match_fn *match_fn, void *arg); /* pci-hotplug */ void pci_device_hot_add(Monitor *mon, const char *pci_addr, const char *type, const char *opts); -void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts); +void drive_hot_add(Monitor *mon, const QDict *qdict); void pci_device_hot_remove(Monitor *mon, const char *pci_addr); void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict); void pci_device_hot_remove_success(int pcibus, int slot);