From f18c16de4a321f1dda01dc7eae8f0aca86900e32 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Fri, 28 Aug 2009 15:27:14 -0300 Subject: [PATCH] monitor: Port handler_2 to use QDict This commit ports command handlers that receive two arguments to use the new monitor's dictionary. Signed-off-by: Luiz Capitulino Signed-off-by: Anthony Liguori --- 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 bf9a3c4415..ba25be4a29 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 e6bcdb5708..7f93e3fcdd 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 f12f0ea1b3..53b923d4b4 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 b0aaadaaf4..d6b1d6463e 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 d21f0e9042..e2513c2223 100644 --- a/net.c +++ b/net.c @@ -2822,8 +2822,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; @@ -2833,9 +2836,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) { @@ -2900,10 +2905,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 bab02f5de9..7fadc350e0 100644 --- a/net.h +++ b/net.h @@ -3,6 +3,7 @@ #include "sys-queue.h" #include "qemu-common.h" +#include "qdict.h" /* VLANs support */ @@ -80,7 +81,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); @@ -145,8 +146,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 d86f01763b..586d9d074f 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);