[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/25] monitor: Port handler_1 to use the dictionary
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 10/25] monitor: Port handler_1 to use the dictionary |
Date: |
Tue, 28 Jul 2009 19:04:58 -0300 |
This commit ports command handlers that receive one argument to use
the new monitor's dictionary.
Signed-off-by: Luiz Capitulino <address@hidden>
---
console.h | 3 +-
hw/pci-hotplug.c | 4 +-
migration.c | 6 +++-
migration.h | 4 +-
monitor.c | 66 +++++++++++++++++++++++++++++++----------------------
savevm.c | 10 +++++---
sysemu.h | 13 +++++-----
vl.c | 11 +++++----
8 files changed, 68 insertions(+), 49 deletions(-)
diff --git a/console.h b/console.h
index 3518339..ea9994f 100644
--- a/console.h
+++ b/console.h
@@ -2,6 +2,7 @@
#define CONSOLE_H
#include "qemu-char.h"
+#include "qemu-dict.h"
/* keyboard/mouse support */
@@ -44,7 +45,7 @@ struct MouseTransformInfo {
};
void do_info_mice(Monitor *mon);
-void do_mouse_set(Monitor *mon, int index);
+void do_mouse_set(Monitor *mon, const struct qemu_dict *qdict);
/* keysym is a unicode code except for special keys (see QEMU_KEY_xxx
constants) */
diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c
index 335681d..db80fb1 100644
--- a/hw/pci-hotplug.c
+++ b/hw/pci-hotplug.c
@@ -199,9 +199,9 @@ void pci_device_hot_remove(Monitor *mon, const char
*pci_addr)
qemu_system_device_hot_add(bus, slot, 0);
}
-void do_pci_device_hot_remove(Monitor *mon, const char *pci_addr)
+void do_pci_device_hot_remove(Monitor *mon, const struct qemu_dict *qdict)
{
- pci_device_hot_remove(mon, pci_addr);
+ pci_device_hot_remove(mon, qemu_dict_get(qdict, "pci_addr"));
}
static int pci_match_fn(void *dev_private, void *arg)
diff --git a/migration.c b/migration.c
index 024793f..664ad00 100644
--- a/migration.c
+++ b/migration.c
@@ -80,11 +80,12 @@ void do_migrate_cancel(Monitor *mon, const struct qemu_dict
*qdict)
s->cancel(s);
}
-void do_migrate_set_speed(Monitor *mon, const char *value)
+void do_migrate_set_speed(Monitor *mon, const struct qemu_dict *qdict)
{
double d;
char *ptr;
FdMigrationState *s;
+ const char *value = qemu_dict_get(qdict, "value");
d = strtod(value, &ptr);
switch (*ptr) {
@@ -118,10 +119,11 @@ uint64_t migrate_max_downtime(void)
return max_downtime;
}
-void do_migrate_set_downtime(Monitor *mon, const char *value)
+void do_migrate_set_downtime(Monitor *mon, const struct qemu_dict *qdict)
{
char *ptr;
double d;
+ const char *value = qemu_dict_get(qdict, "value");
d = strtod(value, &ptr);
if (!strcmp(ptr,"ms")) {
diff --git a/migration.h b/migration.h
index 97c0044..671e31b 100644
--- a/migration.h
+++ b/migration.h
@@ -54,11 +54,11 @@ void do_migrate(Monitor *mon, int detach, const char *uri);
void do_migrate_cancel(Monitor *mon, const struct qemu_dict *qdict);
-void do_migrate_set_speed(Monitor *mon, const char *value);
+void do_migrate_set_speed(Monitor *mon, const struct qemu_dict *qdict);
uint64_t migrate_max_downtime(void);
-void do_migrate_set_downtime(Monitor *mon, const char *value);
+void do_migrate_set_downtime(Monitor *mon, const struct qemu_dict *qdict);
void do_info_migrate(Monitor *mon);
diff --git a/monitor.c b/monitor.c
index 46b3e0c..4b2a7b5 100644
--- a/monitor.c
+++ b/monitor.c
@@ -254,15 +254,16 @@ static void help_cmd(Monitor *mon, const char *name)
}
}
-static void do_help_cmd(Monitor *mon, const char *name)
+static void do_help_cmd(Monitor *mon, const struct qemu_dict *qdict)
{
- help_cmd(mon, name);
+ help_cmd(mon, qemu_dict_get(qdict, "name"));
}
-static void do_commit(Monitor *mon, const char *device)
+static void do_commit(Monitor *mon, const struct qemu_dict *qdict)
{
int all_devices;
DriveInfo *dinfo;
+ const char *device = qemu_dict_get(qdict, "device");
all_devices = !strcmp(device, "all");
TAILQ_FOREACH(dinfo, &drives, next) {
@@ -273,9 +274,10 @@ static void do_commit(Monitor *mon, const char *device)
}
}
-static void do_info(Monitor *mon, const char *item)
+static void do_info(Monitor *mon, const struct qemu_dict *qdict)
{
const mon_cmd_t *cmd;
+ const char *item = qemu_dict_get(qdict, "item");
void (*handler)(Monitor *);
if (!item)
@@ -387,8 +389,9 @@ static void do_info_cpus(Monitor *mon)
}
}
-static void do_cpu_set(Monitor *mon, int index)
+static void do_cpu_set(Monitor *mon, const struct qemu_dict *qdict)
{
+ long index = (long) qemu_dict_get(qdict, "index");
if (mon_set_cpu(index) < 0)
monitor_printf(mon, "Invalid CPU index\n");
}
@@ -522,19 +525,20 @@ static void do_change(Monitor *mon, const char *device,
const char *target,
}
}
-static void do_screen_dump(Monitor *mon, const char *filename)
+static void do_screen_dump(Monitor *mon, const struct qemu_dict *qdict)
{
- vga_hw_screen_dump(filename);
+ vga_hw_screen_dump(qemu_dict_get(qdict, "filename"));
}
-static void do_logfile(Monitor *mon, const char *filename)
+static void do_logfile(Monitor *mon, const struct qemu_dict *qdict)
{
- cpu_set_log_filename(filename);
+ cpu_set_log_filename(qemu_dict_get(qdict, "filename"));
}
-static void do_log(Monitor *mon, const char *items)
+static void do_log(Monitor *mon, const struct qemu_dict *qdict)
{
int mask;
+ const char *items = qemu_dict_get(qdict, "items");
if (!strcmp(items, "none")) {
mask = 0;
@@ -548,8 +552,9 @@ static void do_log(Monitor *mon, const char *items)
cpu_set_log(mask);
}
-static void do_singlestep(Monitor *mon, const char *option)
+static void do_singlestep(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *option = qemu_dict_get(qdict, "option");
if (!option || !strcmp(option, "on")) {
singlestep = 1;
} else if (!strcmp(option, "off")) {
@@ -601,8 +606,9 @@ static void encrypted_bdrv_it(void *opaque,
BlockDriverState *bs)
}
}
-static void do_gdbserver(Monitor *mon, const char *device)
+static void do_gdbserver(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *device = qemu_dict_get(qdict, "device");
if (!device)
device = "tcp::" DEFAULT_GDBSTUB_PORT;
if (gdbserver_start(device) < 0) {
@@ -616,8 +622,9 @@ static void do_gdbserver(Monitor *mon, const char *device)
}
}
-static void do_watchdog_action(Monitor *mon, const char *action)
+static void do_watchdog_action(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *action = qemu_dict_get(qdict, "action");
if (select_watchdog_action(action) == -1) {
monitor_printf(mon, "Unknown watchdog action '%s'\n", action);
}
@@ -1175,8 +1182,9 @@ static void do_mouse_move(Monitor *mon, const char
*dx_str, const char *dy_str,
kbd_mouse_event(dx, dy, dz, mouse_button_state);
}
-static void do_mouse_button(Monitor *mon, int button_state)
+static void do_mouse_button(Monitor *mon, const struct qemu_dict *qdict)
{
+ long button_state = (long) qemu_dict_get(qdict, "button_state");
mouse_button_state = button_state;
kbd_mouse_event(0, 0, 0, mouse_button_state);
}
@@ -1231,9 +1239,10 @@ static void do_ioport_write(Monitor *mon, int count, int
format, int size,
}
}
-static void do_boot_set(Monitor *mon, const char *bootdevice)
+static void do_boot_set(Monitor *mon, const struct qemu_dict *qdict)
{
int res;
+ const char *bootdevice = qemu_dict_get(qdict, "bootdevice");
res = qemu_boot_set(bootdevice);
if (res == 0) {
@@ -1530,9 +1539,10 @@ static void do_info_capture(Monitor *mon)
}
#ifdef HAS_AUDIO
-static void do_stop_capture(Monitor *mon, int n)
+static void do_stop_capture(Monitor *mon, const struct qemu_dict *qdict)
{
int i;
+ long n = (long) qemu_dict_get(qdict, "n");
CaptureState *s;
for (s = capture_head.lh_first, i = 0; s; s = s->entries.le_next, ++i) {
@@ -1567,9 +1577,10 @@ static void do_wav_capture(Monitor *mon, const char
*path,
#endif
#if defined(TARGET_I386)
-static void do_inject_nmi(Monitor *mon, int cpu_index)
+static void do_inject_nmi(Monitor *mon, const struct qemu_dict *qdict)
{
CPUState *env;
+ long cpu_index = (long) qemu_dict_get(qdict, "cpu_index");
for (env = first_cpu; env != NULL; env = env->next_cpu)
if (env->cpu_index == cpu_index) {
@@ -1592,8 +1603,9 @@ static void do_info_status(Monitor *mon)
}
-static void do_balloon(Monitor *mon, int value)
+static void do_balloon(Monitor *mon, const struct qemu_dict *qdict)
{
+ long value = (long) qemu_dict_get(qdict, "value");
ram_addr_t target = value;
qemu_balloon(target << 20);
}
@@ -1622,8 +1634,9 @@ static qemu_acl *find_acl(Monitor *mon, const char *name)
return acl;
}
-static void do_acl_show(Monitor *mon, const char *aclname)
+static void do_acl_show(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *aclname = qemu_dict_get(qdict, "aclname");
qemu_acl *acl = find_acl(mon, aclname);
qemu_acl_entry *entry;
int i = 0;
@@ -1639,8 +1652,9 @@ static void do_acl_show(Monitor *mon, const char *aclname)
}
}
-static void do_acl_reset(Monitor *mon, const char *aclname)
+static void do_acl_reset(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *aclname = qemu_dict_get(qdict, "aclname");
qemu_acl *acl = find_acl(mon, aclname);
if (acl) {
@@ -1732,8 +1746,9 @@ static void do_inject_mce(Monitor *mon,
}
#endif
-static void do_getfd(Monitor *mon, const char *fdname)
+static void do_getfd(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *fdname = qemu_dict_get(qdict, "fdname");
mon_fd_t *monfd;
int fd;
@@ -1772,8 +1787,9 @@ static void do_getfd(Monitor *mon, const char *fdname)
LIST_INSERT_HEAD(&mon->fds, monfd, next);
}
-static void do_closefd(Monitor *mon, const char *fdname)
+static void do_closefd(Monitor *mon, const struct qemu_dict *qdict)
{
+ const char *fdname = qemu_dict_get(qdict, "fdname");
mon_fd_t *monfd;
LIST_FOREACH(monfd, &mon->fds, next) {
@@ -2639,7 +2655,6 @@ static void monitor_handle_command(Monitor *mon, const
char *cmdline)
void *args[MAX_ARGS];
struct qemu_dict *qdict;
void (*handler_d)(Monitor *mon, const struct qemu_dict *qdict);
- void (*handler_1)(Monitor *mon, void *arg0);
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,
@@ -2940,13 +2955,10 @@ static void monitor_handle_command(Monitor *mon, const
char *cmdline)
switch(nb_args) {
case 0:
+ case 1:
handler_d = cmd->handler;
handler_d(mon, qdict);
break;
- case 1:
- handler_1 = cmd->handler;
- handler_1(mon, args[0]);
- break;
case 2:
handler_2 = cmd->handler;
handler_2(mon, args[0], args[1]);
diff --git a/savevm.c b/savevm.c
index 9f988e6..01f29b8 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1048,7 +1048,7 @@ static int bdrv_snapshot_find(BlockDriverState *bs,
QEMUSnapshotInfo *sn_info,
return ret;
}
-void do_savevm(Monitor *mon, const char *name)
+void do_savevm(Monitor *mon, const struct qemu_dict *qdict)
{
DriveInfo *dinfo;
BlockDriverState *bs, *bs1;
@@ -1062,6 +1062,7 @@ void do_savevm(Monitor *mon, const char *name)
#else
struct timeval tv;
#endif
+ const char *name = qemu_dict_get(qdict, "name");
bs = get_bs_snapshots();
if (!bs) {
@@ -1217,16 +1218,17 @@ void qemu_loadvm(Monitor *mon, const char *name)
vm_start();
}
-void do_loadvm(Monitor *mon, const char *name)
+void do_loadvm(Monitor *mon, const struct qemu_dict *qdict)
{
- qemu_loadvm(mon, name);
+ qemu_loadvm(mon, qemu_dict_get(qdict, "name"));
}
-void do_delvm(Monitor *mon, const char *name)
+void do_delvm(Monitor *mon, const struct qemu_dict *qdict)
{
DriveInfo *dinfo;
BlockDriverState *bs, *bs1;
int ret;
+ const char *name = qemu_dict_get(qdict, "name");
bs = get_bs_snapshots();
if (!bs) {
diff --git a/sysemu.h b/sysemu.h
index ebc42ed..6e0c4f9 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -5,6 +5,7 @@
#include "qemu-common.h"
#include "qemu-option.h"
#include "sys-queue.h"
+#include "qemu-dict.h"
#ifdef _WIN32
#include <windows.h>
@@ -57,10 +58,10 @@ void qemu_system_powerdown(void);
#endif
void qemu_system_reset(void);
-void do_savevm(Monitor *mon, const char *name);
-void do_loadvm(Monitor *mon, const char *name);
+void do_savevm(Monitor *mon, const struct qemu_dict *qdict);
+void do_loadvm(Monitor *mon, const struct qemu_dict *qdict);
void qemu_loadvm(Monitor *mon, const char *name);
-void do_delvm(Monitor *mon, const char *name);
+void do_delvm(Monitor *mon, const struct qemu_dict *qdict);
void do_info_snapshots(Monitor *mon);
void qemu_announce_self(void);
@@ -211,8 +212,8 @@ void destroy_bdrvs(dev_match_fn *match_fn, void *arg);
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 do_pci_device_hot_remove(Monitor *mon, const char *pci_addr);
void pci_device_hot_remove(Monitor *mon, const char *pci_addr);
+void do_pci_device_hot_remove(Monitor *mon, const struct qemu_dict *qdict);
void pci_device_hot_remove_success(int pcibus, int slot);
/* serial ports */
@@ -268,8 +269,8 @@ struct soundhw {
extern struct soundhw soundhw[];
#endif
-void do_usb_add(Monitor *mon, const char *devname);
-void do_usb_del(Monitor *mon, const char *devname);
+void do_usb_add(Monitor *mon, const struct qemu_dict *qdict);
+void do_usb_del(Monitor *mon, const struct qemu_dict *qdict);
void usb_info(Monitor *mon);
void register_devices(void);
diff --git a/vl.c b/vl.c
index 337be63..624c79f 100644
--- a/vl.c
+++ b/vl.c
@@ -478,10 +478,11 @@ void do_info_mice(Monitor *mon)
}
}
-void do_mouse_set(Monitor *mon, int index)
+void do_mouse_set(Monitor *mon, const struct qemu_dict *qdict)
{
QEMUPutMouseEntry *cursor;
int i = 0;
+ long index = (long) qemu_dict_get(qdict, "index");
if (!qemu_put_mouse_event_head) {
monitor_printf(mon, "No mouse devices connected\n");
@@ -2587,14 +2588,14 @@ static int usb_parse(const char *cmdline)
return usb_device_add(cmdline, 0);
}
-void do_usb_add(Monitor *mon, const char *devname)
+void do_usb_add(Monitor *mon, const struct qemu_dict *qdict)
{
- usb_device_add(devname, 1);
+ usb_device_add(qemu_dict_get(qdict, "devname"), 1);
}
-void do_usb_del(Monitor *mon, const char *devname)
+void do_usb_del(Monitor *mon, const struct qemu_dict *qdict)
{
- usb_device_del(devname);
+ usb_device_del(qemu_dict_get(qdict, "devname"));
}
void usb_info(Monitor *mon)
--
1.6.4.rc3.12.gdf73a
- [Qemu-devel] Re: [PATCH 01/25] Introduce QEMU dictionary data type, (continued)
- [Qemu-devel] [PATCH 02/25] net: Fix do_set_link() return type, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 03/25] Add wrappers to functions used by the Monitor, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 04/25] monitor: Document missing supported argument types, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 05/25] monitor: New format for handlers argument types, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 06/25] monitor: Setup a dictionary with handler arguments, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 07/25] monitor: Export qemu-dict.h header, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 08/25] monitor: New GET_TLONG and GET_TPHYSADDR macros, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 09/25] monitor: Port handler_0 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 10/25] monitor: Port handler_1 to use the dictionary,
Luiz Capitulino <=
- [Qemu-devel] [PATCH 11/25] monitor: Port handler_2 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 13/25] monitor: Port handler_4 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 12/25] monitor: Port handler_3 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 14/25] monitor: Port handler_5 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 15/25] monitor: Port handler_6 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 16/25] monitor: Port handler_7 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 17/25] monitor: Drop handler_8 and handler_9 handling, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 18/25] monitor: Port handler_10 to use the dictionary, Luiz Capitulino, 2009/07/28
- [Qemu-devel] [PATCH 19/25] monitor: Split monitor_handle_command(), Luiz Capitulino, 2009/07/28