From patchwork Fri Aug 28 18:27:14 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Capitulino X-Patchwork-Id: 32405 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 6408FB7257 for ; Sat, 29 Aug 2009 04:51:36 +1000 (EST) Received: from localhost ([127.0.0.1]:59689 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mh6Xo-0000A0-MT for incoming@patchwork.ozlabs.org; Fri, 28 Aug 2009 14:51:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Mh6BX-0007dw-8Q for qemu-devel@nongnu.org; Fri, 28 Aug 2009 14:28:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Mh6BR-0007aL-E8 for qemu-devel@nongnu.org; Fri, 28 Aug 2009 14:28:26 -0400 Received: from [199.232.76.173] (port=41295 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mh6BR-0007a6-0s for qemu-devel@nongnu.org; Fri, 28 Aug 2009 14:28:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45266) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Mh6BQ-00036Q-CE for qemu-devel@nongnu.org; Fri, 28 Aug 2009 14:28:20 -0400 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n7SISJss025860; Fri, 28 Aug 2009 14:28:19 -0400 Received: from localhost (vpn-10-114.bos.redhat.com [10.16.10.114]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n7SISHkB021756; Fri, 28 Aug 2009 14:28:18 -0400 From: Luiz Capitulino To: qemu-devel@nongnu.org Date: Fri, 28 Aug 2009 15:27:14 -0300 Message-Id: <1251484052-3939-12-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1251484052-3939-1-git-send-email-lcapitulino@redhat.com> References: <1251484052-3939-1-git-send-email-lcapitulino@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-detected-operating-system: by monty-python.gnu.org: Genre and OS details not recognized. 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 bf9a3c4..ba25be4 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 e6bcdb5..7f93e3f 100644 --- a/migration.c +++ b/migration.c @@ -52,10 +52,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 f12f0ea..53b923d 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 1557433..7a89d48 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; @@ -2572,7 +2579,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); @@ -2865,13 +2871,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 d86f017..586d9d0 100644 --- a/sysemu.h +++ b/sysemu.h @@ -212,7 +212,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);