From patchwork Thu Aug 13 13:50:10 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Capitulino X-Patchwork-Id: 31309 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 1A0C4B6F2B for ; Fri, 14 Aug 2009 00:10:20 +1000 (EST) Received: from localhost ([127.0.0.1]:33414 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Mbb0R-000793-9I for incoming@patchwork.ozlabs.org; Thu, 13 Aug 2009 10:10:15 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MbaiL-0000ho-Aw for qemu-devel@nongnu.org; Thu, 13 Aug 2009 09:51:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MbaiE-0000X5-Js for qemu-devel@nongnu.org; Thu, 13 Aug 2009 09:51:30 -0400 Received: from [199.232.76.173] (port=33499 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbaiE-0000WV-0P for qemu-devel@nongnu.org; Thu, 13 Aug 2009 09:51:26 -0400 Received: from mx2.redhat.com ([66.187.237.31]:45084) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MbaiD-0003IN-46 for qemu-devel@nongnu.org; Thu, 13 Aug 2009 09:51:25 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n7DDpOPH023296; Thu, 13 Aug 2009 09:51:24 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n7DDpNgC027321; Thu, 13 Aug 2009 09:51:23 -0400 Received: from localhost (vpn-10-83.bos.redhat.com [10.16.10.83]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n7DDpLGD012151; Thu, 13 Aug 2009 09:51:22 -0400 From: Luiz Capitulino To: qemu-devel@nongnu.org Date: Thu, 13 Aug 2009 10:50:10 -0300 Message-Id: <1250171428-29308-12-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1250171428-29308-1-git-send-email-lcapitulino@redhat.com> References: <1250171428-29308-1-git-send-email-lcapitulino@redhat.com> X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) 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 9d19097..e729158 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 44fc78a..6063cfb 100644 --- a/migration.c +++ b/migration.c @@ -48,10 +48,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 842ff50..ffcaec9 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 220b41d..770240a 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_uint32(qdict, "start"); + uint32_t size = qdict_get_uint32(qdict, "size"); sum = 0; for(addr = start; addr < (start + size); addr++) { @@ -1655,9 +1659,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) { @@ -1702,8 +1707,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; @@ -2618,7 +2625,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); @@ -2910,13 +2916,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 1b531e7..bc956cc 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_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 0dd4593..a2ce843 100644 --- a/sysemu.h +++ b/sysemu.h @@ -206,7 +206,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);