* [Qemu-devel] [PULL 0/5]: QMP queue
@ 2011-10-14 17:26 Luiz Capitulino
2011-10-20 15:01 ` Anthony Liguori
0 siblings, 1 reply; 16+ messages in thread
From: Luiz Capitulino @ 2011-10-14 17:26 UTC (permalink / raw)
To: aliguori; +Cc: qemu-devel
Most of the patches are runstate fixes and have been sent to the list
already.
The changes (since 210b3a70383b0bcc4266856431491b39dcb4f14d) are available
in the following repository:
git://repo.or.cz/qemu/qmp-unstable.git qmp/queue
Luiz Capitulino (5):
QMP: Fix blockdev-snapshot-sync doc example
runstate: Print state transition when invalid
runstate: Allow to transition from paused to postmigrate
savevm: qemu_savevm_state(): Drop stop VM logic
runstate: Allow user to migrate twice
cpus.c | 11 +++++++++++
migration.c | 2 +-
qmp-commands.hx | 8 ++++----
savevm.c | 7 -------
sysemu.h | 1 +
vl.c | 12 ++++++++++--
6 files changed, 27 insertions(+), 14 deletions(-)
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5]: QMP queue
2011-10-14 17:26 Luiz Capitulino
@ 2011-10-20 15:01 ` Anthony Liguori
0 siblings, 0 replies; 16+ messages in thread
From: Anthony Liguori @ 2011-10-20 15:01 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
On 10/14/2011 12:26 PM, Luiz Capitulino wrote:
> Most of the patches are runstate fixes and have been sent to the list
> already.
>
> The changes (since 210b3a70383b0bcc4266856431491b39dcb4f14d) are available
> in the following repository:
>
> git://repo.or.cz/qemu/qmp-unstable.git qmp/queue
Pulled. Thanks.
Regards,
Anthony Liguori
>
> Luiz Capitulino (5):
> QMP: Fix blockdev-snapshot-sync doc example
> runstate: Print state transition when invalid
> runstate: Allow to transition from paused to postmigrate
> savevm: qemu_savevm_state(): Drop stop VM logic
> runstate: Allow user to migrate twice
>
> cpus.c | 11 +++++++++++
> migration.c | 2 +-
> qmp-commands.hx | 8 ++++----
> savevm.c | 7 -------
> sysemu.h | 1 +
> vl.c | 12 ++++++++++--
> 6 files changed, 27 insertions(+), 14 deletions(-)
>
>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 0/5]: QMP queue
@ 2012-02-23 14:42 Luiz Capitulino
2012-02-24 16:35 ` Anthony Liguori
0 siblings, 1 reply; 16+ messages in thread
From: Luiz Capitulino @ 2012-02-23 14:42 UTC (permalink / raw)
To: aliguori; +Cc: qemu-devel
Contains only the DEVICE_TRAY_MOVED event series.
The changes (since 235fe3bfd46b1104575b540d0bc3fdf584030b99) are available
in the following repository:
git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Luiz Capitulino (5):
block: Rename bdrv_mon_event() & BlockMonEventAction
block: bdrv_eject(): Make eject_flag a real bool
block: Don't call bdrv_eject() if the tray state didn't change
ide: drop ide_tray_state_post_load()
qmp: add DEVICE_TRAY_MOVED event
QMP/qmp-events.txt | 18 +++++++++++
block.c | 84 +++++++++++++++++++++++++++++++++------------------
block.h | 8 ++--
block/raw-posix.c | 6 ++--
block/raw.c | 2 +-
block_int.h | 2 +-
hw/ide/atapi.c | 7 +++-
hw/ide/core.c | 16 ++--------
hw/scsi-disk.c | 13 +++++---
hw/virtio-blk.c | 6 ++--
monitor.c | 3 ++
monitor.h | 1 +
12 files changed, 104 insertions(+), 62 deletions(-)
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5]: QMP queue
2012-02-23 14:42 [Qemu-devel] [PULL 0/5]: " Luiz Capitulino
@ 2012-02-24 16:35 ` Anthony Liguori
0 siblings, 0 replies; 16+ messages in thread
From: Anthony Liguori @ 2012-02-24 16:35 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
On 02/23/2012 08:42 AM, Luiz Capitulino wrote:
> Contains only the DEVICE_TRAY_MOVED event series.
>
> The changes (since 235fe3bfd46b1104575b540d0bc3fdf584030b99) are available
> in the following repository:
>
> git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Pulled. Thanks.
Regards,
Anthony Liguori
>
> Luiz Capitulino (5):
> block: Rename bdrv_mon_event()& BlockMonEventAction
> block: bdrv_eject(): Make eject_flag a real bool
> block: Don't call bdrv_eject() if the tray state didn't change
> ide: drop ide_tray_state_post_load()
> qmp: add DEVICE_TRAY_MOVED event
>
> QMP/qmp-events.txt | 18 +++++++++++
> block.c | 84 +++++++++++++++++++++++++++++++++------------------
> block.h | 8 ++--
> block/raw-posix.c | 6 ++--
> block/raw.c | 2 +-
> block_int.h | 2 +-
> hw/ide/atapi.c | 7 +++-
> hw/ide/core.c | 16 ++--------
> hw/scsi-disk.c | 13 +++++---
> hw/virtio-blk.c | 6 ++--
> monitor.c | 3 ++
> monitor.h | 1 +
> 12 files changed, 104 insertions(+), 62 deletions(-)
>
>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 0/5] QMP queue
@ 2013-01-17 15:12 Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 1/5] HMP: add QDict to info callback handler Luiz Capitulino
` (5 more replies)
0 siblings, 6 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
The changes (since 47f4dac3fde809e3da4e60d9eb699f1d4b378249) are available
in the following repository:
git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Wenchao Xia (5):
HMP: add QDict to info callback handler
HMP: delete info handler
HMP: add infrastructure for sub command
HMP: move define of mon_cmds
HMP: add sub command table to info
hmp-commands.hx | 3 +-
hmp.c | 36 ++++-----
hmp.h | 36 ++++-----
hw/i8259.c | 4 +-
hw/lm32_pic.c | 4 +-
hw/lm32_pic.h | 4 +-
hw/loader.c | 2 +-
hw/loader.h | 3 +-
hw/pc.h | 4 +-
hw/pcmcia.h | 2 +-
hw/qdev-monitor.c | 4 +-
hw/qdev-monitor.h | 4 +-
hw/sun4m.c | 4 +-
hw/sun4m.h | 4 +-
hw/usb.h | 2 +-
hw/usb/bus.c | 2 +-
hw/usb/host-bsd.c | 2 +-
hw/usb/host-linux.c | 2 +-
include/net/net.h | 2 +-
include/net/slirp.h | 2 +-
include/sysemu/sysemu.h | 4 +-
monitor.c | 200 +++++++++++++++++++++++++-----------------------
net/net.c | 2 +-
net/slirp.c | 2 +-
savevm.c | 2 +-
vl.c | 2 +-
26 files changed, 174 insertions(+), 164 deletions(-)
--
1.8.1.GIT
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 1/5] HMP: add QDict to info callback handler
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
@ 2013-01-17 15:12 ` Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 2/5] HMP: delete info handler Luiz Capitulino
` (4 subsequent siblings)
5 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
This patch change all info call back function to take
additional QDict * parameter, which allow those command
take parameter. Now it is set to NULL at default case.
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
hmp.c | 36 ++++++++++++++++++------------------
hmp.h | 36 ++++++++++++++++++------------------
hw/i8259.c | 4 ++--
hw/lm32_pic.c | 4 ++--
hw/lm32_pic.h | 4 ++--
hw/loader.c | 2 +-
hw/loader.h | 3 ++-
hw/pc.h | 4 ++--
hw/pcmcia.h | 2 +-
hw/qdev-monitor.c | 4 ++--
hw/qdev-monitor.h | 4 ++--
hw/sun4m.c | 4 ++--
hw/sun4m.h | 4 ++--
hw/usb.h | 2 +-
hw/usb/bus.c | 2 +-
hw/usb/host-bsd.c | 2 +-
hw/usb/host-linux.c | 2 +-
include/net/net.h | 2 +-
include/net/slirp.h | 2 +-
include/sysemu/sysemu.h | 4 ++--
monitor.c | 32 ++++++++++++++++----------------
net/net.c | 2 +-
net/slirp.c | 2 +-
savevm.c | 2 +-
vl.c | 2 +-
25 files changed, 84 insertions(+), 83 deletions(-)
diff --git a/hmp.c b/hmp.c
index 68929b4..c7b6ba0 100644
--- a/hmp.c
+++ b/hmp.c
@@ -31,7 +31,7 @@ static void hmp_handle_error(Monitor *mon, Error **errp)
}
}
-void hmp_info_name(Monitor *mon)
+void hmp_info_name(Monitor *mon, const QDict *qdict)
{
NameInfo *info;
@@ -42,7 +42,7 @@ void hmp_info_name(Monitor *mon)
qapi_free_NameInfo(info);
}
-void hmp_info_version(Monitor *mon)
+void hmp_info_version(Monitor *mon, const QDict *qdict)
{
VersionInfo *info;
@@ -55,7 +55,7 @@ void hmp_info_version(Monitor *mon)
qapi_free_VersionInfo(info);
}
-void hmp_info_kvm(Monitor *mon)
+void hmp_info_kvm(Monitor *mon, const QDict *qdict)
{
KvmInfo *info;
@@ -70,7 +70,7 @@ void hmp_info_kvm(Monitor *mon)
qapi_free_KvmInfo(info);
}
-void hmp_info_status(Monitor *mon)
+void hmp_info_status(Monitor *mon, const QDict *qdict)
{
StatusInfo *info;
@@ -89,7 +89,7 @@ void hmp_info_status(Monitor *mon)
qapi_free_StatusInfo(info);
}
-void hmp_info_uuid(Monitor *mon)
+void hmp_info_uuid(Monitor *mon, const QDict *qdict)
{
UuidInfo *info;
@@ -98,7 +98,7 @@ void hmp_info_uuid(Monitor *mon)
qapi_free_UuidInfo(info);
}
-void hmp_info_chardev(Monitor *mon)
+void hmp_info_chardev(Monitor *mon, const QDict *qdict)
{
ChardevInfoList *char_info, *info;
@@ -111,7 +111,7 @@ void hmp_info_chardev(Monitor *mon)
qapi_free_ChardevInfoList(char_info);
}
-void hmp_info_mice(Monitor *mon)
+void hmp_info_mice(Monitor *mon, const QDict *qdict)
{
MouseInfoList *mice_list, *mouse;
@@ -131,7 +131,7 @@ void hmp_info_mice(Monitor *mon)
qapi_free_MouseInfoList(mice_list);
}
-void hmp_info_migrate(Monitor *mon)
+void hmp_info_migrate(Monitor *mon, const QDict *qdict)
{
MigrationInfo *info;
MigrationCapabilityStatusList *caps, *cap;
@@ -209,7 +209,7 @@ void hmp_info_migrate(Monitor *mon)
qapi_free_MigrationCapabilityStatusList(caps);
}
-void hmp_info_migrate_capabilities(Monitor *mon)
+void hmp_info_migrate_capabilities(Monitor *mon, const QDict *qdict)
{
MigrationCapabilityStatusList *caps, *cap;
@@ -228,13 +228,13 @@ void hmp_info_migrate_capabilities(Monitor *mon)
qapi_free_MigrationCapabilityStatusList(caps);
}
-void hmp_info_migrate_cache_size(Monitor *mon)
+void hmp_info_migrate_cache_size(Monitor *mon, const QDict *qdict)
{
monitor_printf(mon, "xbzrel cache size: %" PRId64 " kbytes\n",
qmp_query_migrate_cache_size(NULL) >> 10);
}
-void hmp_info_cpus(Monitor *mon)
+void hmp_info_cpus(Monitor *mon, const QDict *qdict)
{
CpuInfoList *cpu_list, *cpu;
@@ -272,7 +272,7 @@ void hmp_info_cpus(Monitor *mon)
qapi_free_CpuInfoList(cpu_list);
}
-void hmp_info_block(Monitor *mon)
+void hmp_info_block(Monitor *mon, const QDict *qdict)
{
BlockInfoList *block_list, *info;
@@ -326,7 +326,7 @@ void hmp_info_block(Monitor *mon)
qapi_free_BlockInfoList(block_list);
}
-void hmp_info_blockstats(Monitor *mon)
+void hmp_info_blockstats(Monitor *mon, const QDict *qdict)
{
BlockStatsList *stats_list, *stats;
@@ -360,7 +360,7 @@ void hmp_info_blockstats(Monitor *mon)
qapi_free_BlockStatsList(stats_list);
}
-void hmp_info_vnc(Monitor *mon)
+void hmp_info_vnc(Monitor *mon, const QDict *qdict)
{
VncInfo *info;
Error *err = NULL;
@@ -406,7 +406,7 @@ out:
qapi_free_VncInfo(info);
}
-void hmp_info_spice(Monitor *mon)
+void hmp_info_spice(Monitor *mon, const QDict *qdict)
{
SpiceChannelList *chan;
SpiceInfo *info;
@@ -453,7 +453,7 @@ out:
qapi_free_SpiceInfo(info);
}
-void hmp_info_balloon(Monitor *mon)
+void hmp_info_balloon(Monitor *mon, const QDict *qdict)
{
BalloonInfo *info;
Error *err = NULL;
@@ -570,7 +570,7 @@ static void hmp_info_pci_device(Monitor *mon, const PciDeviceInfo *dev)
}
}
-void hmp_info_pci(Monitor *mon)
+void hmp_info_pci(Monitor *mon, const QDict *qdict)
{
PciInfoList *info_list, *info;
Error *err = NULL;
@@ -593,7 +593,7 @@ void hmp_info_pci(Monitor *mon)
qapi_free_PciInfoList(info_list);
}
-void hmp_info_block_jobs(Monitor *mon)
+void hmp_info_block_jobs(Monitor *mon, const QDict *qdict)
{
BlockJobInfoList *list;
Error *err = NULL;
diff --git a/hmp.h b/hmp.h
index 700fbdc..44be683 100644
--- a/hmp.h
+++ b/hmp.h
@@ -18,24 +18,24 @@
#include "qapi-types.h"
#include "qapi/qmp/qdict.h"
-void hmp_info_name(Monitor *mon);
-void hmp_info_version(Monitor *mon);
-void hmp_info_kvm(Monitor *mon);
-void hmp_info_status(Monitor *mon);
-void hmp_info_uuid(Monitor *mon);
-void hmp_info_chardev(Monitor *mon);
-void hmp_info_mice(Monitor *mon);
-void hmp_info_migrate(Monitor *mon);
-void hmp_info_migrate_capabilities(Monitor *mon);
-void hmp_info_migrate_cache_size(Monitor *mon);
-void hmp_info_cpus(Monitor *mon);
-void hmp_info_block(Monitor *mon);
-void hmp_info_blockstats(Monitor *mon);
-void hmp_info_vnc(Monitor *mon);
-void hmp_info_spice(Monitor *mon);
-void hmp_info_balloon(Monitor *mon);
-void hmp_info_pci(Monitor *mon);
-void hmp_info_block_jobs(Monitor *mon);
+void hmp_info_name(Monitor *mon, const QDict *qdict);
+void hmp_info_version(Monitor *mon, const QDict *qdict);
+void hmp_info_kvm(Monitor *mon, const QDict *qdict);
+void hmp_info_status(Monitor *mon, const QDict *qdict);
+void hmp_info_uuid(Monitor *mon, const QDict *qdict);
+void hmp_info_chardev(Monitor *mon, const QDict *qdict);
+void hmp_info_mice(Monitor *mon, const QDict *qdict);
+void hmp_info_migrate(Monitor *mon, const QDict *qdict);
+void hmp_info_migrate_capabilities(Monitor *mon, const QDict *qdict);
+void hmp_info_migrate_cache_size(Monitor *mon, const QDict *qdict);
+void hmp_info_cpus(Monitor *mon, const QDict *qdict);
+void hmp_info_block(Monitor *mon, const QDict *qdict);
+void hmp_info_blockstats(Monitor *mon, const QDict *qdict);
+void hmp_info_vnc(Monitor *mon, const QDict *qdict);
+void hmp_info_spice(Monitor *mon, const QDict *qdict);
+void hmp_info_balloon(Monitor *mon, const QDict *qdict);
+void hmp_info_pci(Monitor *mon, const QDict *qdict);
+void hmp_info_block_jobs(Monitor *mon, const QDict *qdict);
void hmp_quit(Monitor *mon, const QDict *qdict);
void hmp_stop(Monitor *mon, const QDict *qdict);
void hmp_system_reset(Monitor *mon, const QDict *qdict);
diff --git a/hw/i8259.c b/hw/i8259.c
index 264879e..54fe144 100644
--- a/hw/i8259.c
+++ b/hw/i8259.c
@@ -407,7 +407,7 @@ static void pic_init(PICCommonState *s)
qdev_init_gpio_in(&s->dev.qdev, pic_set_irq, 8);
}
-void pic_info(Monitor *mon)
+void pic_info(Monitor *mon, const QDict *qdict)
{
int i;
PICCommonState *s;
@@ -425,7 +425,7 @@ void pic_info(Monitor *mon)
}
}
-void irq_info(Monitor *mon)
+void irq_info(Monitor *mon, const QDict *qdict)
{
#ifndef DEBUG_IRQ_COUNT
monitor_printf(mon, "irq statistic code not compiled.\n");
diff --git a/hw/lm32_pic.c b/hw/lm32_pic.c
index 8f13355..42f298a 100644
--- a/hw/lm32_pic.c
+++ b/hw/lm32_pic.c
@@ -39,7 +39,7 @@ struct LM32PicState {
typedef struct LM32PicState LM32PicState;
static LM32PicState *pic;
-void lm32_do_pic_info(Monitor *mon)
+void lm32_do_pic_info(Monitor *mon, const QDict *qdict)
{
if (pic == NULL) {
return;
@@ -49,7 +49,7 @@ void lm32_do_pic_info(Monitor *mon)
pic->im, pic->ip, pic->irq_state);
}
-void lm32_irq_info(Monitor *mon)
+void lm32_irq_info(Monitor *mon, const QDict *qdict)
{
int i;
uint32_t count;
diff --git a/hw/lm32_pic.h b/hw/lm32_pic.h
index 14456f3..5556803 100644
--- a/hw/lm32_pic.h
+++ b/hw/lm32_pic.h
@@ -8,7 +8,7 @@ uint32_t lm32_pic_get_im(DeviceState *d);
void lm32_pic_set_ip(DeviceState *d, uint32_t ip);
void lm32_pic_set_im(DeviceState *d, uint32_t im);
-void lm32_do_pic_info(Monitor *mon);
-void lm32_irq_info(Monitor *mon);
+void lm32_do_pic_info(Monitor *mon, const QDict *qdict);
+void lm32_irq_info(Monitor *mon, const QDict *qdict);
#endif /* QEMU_HW_LM32_PIC_H */
diff --git a/hw/loader.c b/hw/loader.c
index 3f59fcd..995edc3 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -778,7 +778,7 @@ void *rom_ptr(hwaddr addr)
return rom->data + (addr - rom->addr);
}
-void do_info_roms(Monitor *mon)
+void do_info_roms(Monitor *mon, const QDict *qdict)
{
Rom *rom;
diff --git a/hw/loader.h b/hw/loader.h
index 26480ad..5e61c95 100644
--- a/hw/loader.h
+++ b/hw/loader.h
@@ -1,5 +1,6 @@
#ifndef LOADER_H
#define LOADER_H
+#include "qapi/qmp/qdict.h"
/* loader.c */
int get_image_size(const char *filename);
@@ -30,7 +31,7 @@ int rom_load_all(void);
void rom_set_fw(void *f);
int rom_copy(uint8_t *dest, hwaddr addr, size_t size);
void *rom_ptr(hwaddr addr);
-void do_info_roms(Monitor *mon);
+void do_info_roms(Monitor *mon, const QDict *qdict);
#define rom_add_file_fixed(_f, _a, _i) \
rom_add_file(_f, NULL, _a, _i)
diff --git a/hw/pc.h b/hw/pc.h
index 4134aa9..fbcf43d 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -40,8 +40,8 @@ qemu_irq *i8259_init(ISABus *bus, qemu_irq parent_irq);
qemu_irq *kvm_i8259_init(ISABus *bus);
int pic_read_irq(DeviceState *d);
int pic_get_output(DeviceState *d);
-void pic_info(Monitor *mon);
-void irq_info(Monitor *mon);
+void pic_info(Monitor *mon, const QDict *qdict);
+void irq_info(Monitor *mon, const QDict *qdict);
/* Global System Interrupts */
diff --git a/hw/pcmcia.h b/hw/pcmcia.h
index aac1d77..f916693 100644
--- a/hw/pcmcia.h
+++ b/hw/pcmcia.h
@@ -14,7 +14,7 @@ typedef struct {
void pcmcia_socket_register(PCMCIASocket *socket);
void pcmcia_socket_unregister(PCMCIASocket *socket);
-void pcmcia_info(Monitor *mon);
+void pcmcia_info(Monitor *mon, const QDict *qdict);
struct PCMCIACardState {
void *state;
diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
index 93283ee..1db5ee0 100644
--- a/hw/qdev-monitor.c
+++ b/hw/qdev-monitor.c
@@ -564,13 +564,13 @@ static void qbus_print(Monitor *mon, BusState *bus, int indent)
}
#undef qdev_printf
-void do_info_qtree(Monitor *mon)
+void do_info_qtree(Monitor *mon, const QDict *qdict)
{
if (sysbus_get_default())
qbus_print(mon, sysbus_get_default(), 0);
}
-void do_info_qdm(Monitor *mon)
+void do_info_qdm(Monitor *mon, const QDict *qdict)
{
object_class_foreach(qdev_print_devinfo, TYPE_DEVICE, false, NULL);
}
diff --git a/hw/qdev-monitor.h b/hw/qdev-monitor.h
index fae1b1e..9ec4850 100644
--- a/hw/qdev-monitor.h
+++ b/hw/qdev-monitor.h
@@ -6,8 +6,8 @@
/*** monitor commands ***/
-void do_info_qtree(Monitor *mon);
-void do_info_qdm(Monitor *mon);
+void do_info_qtree(Monitor *mon, const QDict *qdict);
+void do_info_qdm(Monitor *mon, const QDict *qdict);
int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data);
int do_device_del(Monitor *mon, const QDict *qdict, QObject **ret_data);
int qdev_device_help(QemuOpts *opts);
diff --git a/hw/sun4m.c b/hw/sun4m.c
index 6f5de44..95c5058 100644
--- a/hw/sun4m.c
+++ b/hw/sun4m.c
@@ -216,13 +216,13 @@ static void nvram_init(M48t59State *nvram, uint8_t *macaddr,
static DeviceState *slavio_intctl;
-void sun4m_pic_info(Monitor *mon)
+void sun4m_pic_info(Monitor *mon, const QDict *qdict)
{
if (slavio_intctl)
slavio_pic_info(mon, slavio_intctl);
}
-void sun4m_irq_info(Monitor *mon)
+void sun4m_irq_info(Monitor *mon, const QDict *qdict)
{
if (slavio_intctl)
slavio_irq_info(mon, slavio_intctl);
diff --git a/hw/sun4m.h b/hw/sun4m.h
index 47eb945..0361eee 100644
--- a/hw/sun4m.h
+++ b/hw/sun4m.h
@@ -27,8 +27,8 @@ void slavio_pic_info(Monitor *mon, DeviceState *dev);
void slavio_irq_info(Monitor *mon, DeviceState *dev);
/* sun4m.c */
-void sun4m_pic_info(Monitor *mon);
-void sun4m_irq_info(Monitor *mon);
+void sun4m_pic_info(Monitor *mon, const QDict *qdict);
+void sun4m_irq_info(Monitor *mon, const QDict *qdict);
/* sparc32_dma.c */
#include "sparc32_dma.h"
diff --git a/hw/usb.h b/hw/usb.h
index 50c297f..bc42639 100644
--- a/hw/usb.h
+++ b/hw/usb.h
@@ -435,7 +435,7 @@ int set_usb_string(uint8_t *buf, const char *str);
/* usb-linux.c */
USBDevice *usb_host_device_open(USBBus *bus, const char *devname);
int usb_host_device_close(const char *devname);
-void usb_host_info(Monitor *mon);
+void usb_host_info(Monitor *mon, const QDict *qdict);
/* usb-bt.c */
USBDevice *usb_bt_init(USBBus *bus, HCIInfo *hci);
diff --git a/hw/usb/bus.c b/hw/usb/bus.c
index 2dc7675..e58cd9a 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -542,7 +542,7 @@ static char *usb_get_fw_dev_path(DeviceState *qdev)
return fw_path;
}
-void usb_info(Monitor *mon)
+void usb_info(Monitor *mon, const QDict *qdict)
{
USBBus *bus;
USBDevice *dev;
diff --git a/hw/usb/host-bsd.c b/hw/usb/host-bsd.c
index 172aecb..07f0e01 100644
--- a/hw/usb/host-bsd.c
+++ b/hw/usb/host-bsd.c
@@ -633,7 +633,7 @@ static int usb_host_info_device(void *opaque,
return 0;
}
-void usb_host_info(Monitor *mon)
+void usb_host_info(Monitor *mon, const QDict *qdict)
{
usb_host_scan(mon, usb_host_info_device);
}
diff --git a/hw/usb/host-linux.c b/hw/usb/host-linux.c
index ad75ce0..a2cff8a 100644
--- a/hw/usb/host-linux.c
+++ b/hw/usb/host-linux.c
@@ -1998,7 +1998,7 @@ static void hex2str(int val, char *str, size_t size)
}
}
-void usb_host_info(Monitor *mon)
+void usb_host_info(Monitor *mon, const QDict *qdict)
{
struct USBAutoFilter *f;
struct USBHostDevice *s;
diff --git a/include/net/net.h b/include/net/net.h
index de42dd7..4a92b6c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -112,7 +112,7 @@ ssize_t qemu_deliver_packet_iov(NetClientState *sender,
void *opaque);
void print_net_client(Monitor *mon, NetClientState *nc);
-void do_info_network(Monitor *mon);
+void do_info_network(Monitor *mon, const QDict *qdict);
/* NIC info */
diff --git a/include/net/slirp.h b/include/net/slirp.h
index 54b655c..0502389 100644
--- a/include/net/slirp.h
+++ b/include/net/slirp.h
@@ -40,7 +40,7 @@ int net_slirp_parse_legacy(QemuOptsList *opts_list, const char *optarg, int *ret
int net_slirp_smb(const char *exported_dir);
-void do_info_usernet(Monitor *mon);
+void do_info_usernet(Monitor *mon, const QDict *qdict);
#endif
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index c07d4ee..cd12f09 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -68,7 +68,7 @@ void qemu_add_machine_init_done_notifier(Notifier *notify);
void do_savevm(Monitor *mon, const QDict *qdict);
int load_vmstate(const char *name);
void do_delvm(Monitor *mon, const QDict *qdict);
-void do_info_snapshots(Monitor *mon);
+void do_info_snapshots(Monitor *mon, const QDict *qdict);
void qemu_announce_self(void);
@@ -171,7 +171,7 @@ extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
void do_usb_add(Monitor *mon, const QDict *qdict);
void do_usb_del(Monitor *mon, const QDict *qdict);
-void usb_info(Monitor *mon);
+void usb_info(Monitor *mon, const QDict *qdict);
void rtc_change_mon_event(struct tm *tm);
diff --git a/monitor.c b/monitor.c
index 77ac451..4468bde 100644
--- a/monitor.c
+++ b/monitor.c
@@ -123,7 +123,7 @@ typedef struct mon_cmd_t {
const char *help;
void (*user_print)(Monitor *mon, const QObject *data);
union {
- void (*info)(Monitor *mon);
+ void (*info)(Monitor *mon, const QDict *qdict);
void (*cmd)(Monitor *mon, const QDict *qdict);
int (*cmd_new)(Monitor *mon, const QDict *params, QObject **ret_data);
int (*cmd_async)(Monitor *mon, const QDict *params,
@@ -825,7 +825,7 @@ static void do_info(Monitor *mon, const QDict *qdict)
goto help;
}
- cmd->mhandler.info(mon);
+ cmd->mhandler.info(mon, NULL);
return;
help:
@@ -899,19 +899,19 @@ int monitor_get_cpu_index(void)
return cpu->cpu_index;
}
-static void do_info_registers(Monitor *mon)
+static void do_info_registers(Monitor *mon, const QDict *qdict)
{
CPUArchState *env;
env = mon_get_cpu();
cpu_dump_state(env, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
}
-static void do_info_jit(Monitor *mon)
+static void do_info_jit(Monitor *mon, const QDict *qdict)
{
dump_exec_info((FILE *)mon, monitor_fprintf);
}
-static void do_info_history(Monitor *mon)
+static void do_info_history(Monitor *mon, const QDict *qdict)
{
int i;
const char *str;
@@ -930,7 +930,7 @@ static void do_info_history(Monitor *mon)
#if defined(TARGET_PPC)
/* XXX: not implemented in other targets */
-static void do_info_cpu_stats(Monitor *mon)
+static void do_info_cpu_stats(Monitor *mon, const QDict *qdict)
{
CPUArchState *env;
@@ -939,7 +939,7 @@ static void do_info_cpu_stats(Monitor *mon)
}
#endif
-static void do_trace_print_events(Monitor *mon)
+static void do_trace_print_events(Monitor *mon, const QDict *qdict)
{
trace_print_events((FILE *)mon, &monitor_fprintf);
}
@@ -1491,7 +1491,7 @@ static void tlb_info_64(Monitor *mon, CPUArchState *env)
}
#endif
-static void tlb_info(Monitor *mon)
+static void tlb_info(Monitor *mon, const QDict *qdict)
{
CPUArchState *env;
@@ -1714,7 +1714,7 @@ static void mem_info_64(Monitor *mon, CPUArchState *env)
}
#endif
-static void mem_info(Monitor *mon)
+static void mem_info(Monitor *mon, const QDict *qdict)
{
CPUArchState *env;
@@ -1753,7 +1753,7 @@ static void print_tlb(Monitor *mon, int idx, tlb_t *tlb)
tlb->d, tlb->wt);
}
-static void tlb_info(Monitor *mon)
+static void tlb_info(Monitor *mon, const QDict *qdict)
{
CPUArchState *env = mon_get_cpu();
int i;
@@ -1769,7 +1769,7 @@ static void tlb_info(Monitor *mon)
#endif
#if defined(TARGET_SPARC) || defined(TARGET_PPC) || defined(TARGET_XTENSA)
-static void tlb_info(Monitor *mon)
+static void tlb_info(Monitor *mon, const QDict *qdict)
{
CPUArchState *env1 = mon_get_cpu();
@@ -1777,12 +1777,12 @@ static void tlb_info(Monitor *mon)
}
#endif
-static void do_info_mtree(Monitor *mon)
+static void do_info_mtree(Monitor *mon, const QDict *qdict)
{
mtree_info((fprintf_function)monitor_printf, mon);
}
-static void do_info_numa(Monitor *mon)
+static void do_info_numa(Monitor *mon, const QDict *qdict)
{
int i;
CPUArchState *env;
@@ -1808,7 +1808,7 @@ static void do_info_numa(Monitor *mon)
int64_t qemu_time;
int64_t dev_time;
-static void do_info_profile(Monitor *mon)
+static void do_info_profile(Monitor *mon, const QDict *qdict)
{
int64_t total;
total = qemu_time;
@@ -1822,7 +1822,7 @@ static void do_info_profile(Monitor *mon)
dev_time = 0;
}
#else
-static void do_info_profile(Monitor *mon)
+static void do_info_profile(Monitor *mon, const QDict *qdict)
{
monitor_printf(mon, "Internal profiler not compiled\n");
}
@@ -1831,7 +1831,7 @@ static void do_info_profile(Monitor *mon)
/* Capture support */
static QLIST_HEAD (capture_list_head, CaptureState) capture_head;
-static void do_info_capture(Monitor *mon)
+static void do_info_capture(Monitor *mon, const QDict *qdict)
{
int i;
CaptureState *s;
diff --git a/net/net.c b/net/net.c
index 02b5458..cdd9b04 100644
--- a/net/net.c
+++ b/net/net.c
@@ -852,7 +852,7 @@ void print_net_client(Monitor *mon, NetClientState *nc)
NetClientOptionsKind_lookup[nc->info->type], nc->info_str);
}
-void do_info_network(Monitor *mon)
+void do_info_network(Monitor *mon, const QDict *qdict)
{
NetClientState *nc, *peer;
NetClientOptionsKind type;
diff --git a/net/slirp.c b/net/slirp.c
index c14259f..4df550f 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -670,7 +670,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str,
return -1;
}
-void do_info_usernet(Monitor *mon)
+void do_info_usernet(Monitor *mon, const QDict *qdict)
{
SlirpState *s;
diff --git a/savevm.c b/savevm.c
index 4e970ca..d9ff1d9 100644
--- a/savevm.c
+++ b/savevm.c
@@ -2307,7 +2307,7 @@ void do_delvm(Monitor *mon, const QDict *qdict)
}
}
-void do_info_snapshots(Monitor *mon)
+void do_info_snapshots(Monitor *mon, const QDict *qdict)
{
BlockDriverState *bs, *bs1;
QEMUSnapshotInfo *sn_tab, *sn, s, *sn_info = &s;
diff --git a/vl.c b/vl.c
index 8ce2b10..f4cf7e8 100644
--- a/vl.c
+++ b/vl.c
@@ -1449,7 +1449,7 @@ void pcmcia_socket_unregister(PCMCIASocket *socket)
}
}
-void pcmcia_info(Monitor *mon)
+void pcmcia_info(Monitor *mon, const QDict *qdict)
{
struct pcmcia_socket_entry_s *iter;
--
1.8.1.GIT
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 2/5] HMP: delete info handler
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 1/5] HMP: add QDict to info callback handler Luiz Capitulino
@ 2013-01-17 15:12 ` Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 3/5] HMP: add infrastructure for sub command Luiz Capitulino
` (3 subsequent siblings)
5 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Now cmd and info handler have same format, so delete info handler.
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 91 +++++++++++++++++++++++++++++++--------------------------------
1 file changed, 45 insertions(+), 46 deletions(-)
diff --git a/monitor.c b/monitor.c
index 4468bde..6e87b5c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -123,7 +123,6 @@ typedef struct mon_cmd_t {
const char *help;
void (*user_print)(Monitor *mon, const QObject *data);
union {
- void (*info)(Monitor *mon, const QDict *qdict);
void (*cmd)(Monitor *mon, const QDict *qdict);
int (*cmd_new)(Monitor *mon, const QDict *params, QObject **ret_data);
int (*cmd_async)(Monitor *mon, const QDict *params,
@@ -825,7 +824,7 @@ static void do_info(Monitor *mon, const QDict *qdict)
goto help;
}
- cmd->mhandler.info(mon, NULL);
+ cmd->mhandler.cmd(mon, NULL);
return;
help:
@@ -2442,63 +2441,63 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show the version of QEMU",
- .mhandler.info = hmp_info_version,
+ .mhandler.cmd = hmp_info_version,
},
{
.name = "network",
.args_type = "",
.params = "",
.help = "show the network state",
- .mhandler.info = do_info_network,
+ .mhandler.cmd = do_info_network,
},
{
.name = "chardev",
.args_type = "",
.params = "",
.help = "show the character devices",
- .mhandler.info = hmp_info_chardev,
+ .mhandler.cmd = hmp_info_chardev,
},
{
.name = "block",
.args_type = "",
.params = "",
.help = "show the block devices",
- .mhandler.info = hmp_info_block,
+ .mhandler.cmd = hmp_info_block,
},
{
.name = "blockstats",
.args_type = "",
.params = "",
.help = "show block device statistics",
- .mhandler.info = hmp_info_blockstats,
+ .mhandler.cmd = hmp_info_blockstats,
},
{
.name = "block-jobs",
.args_type = "",
.params = "",
.help = "show progress of ongoing block device operations",
- .mhandler.info = hmp_info_block_jobs,
+ .mhandler.cmd = hmp_info_block_jobs,
},
{
.name = "registers",
.args_type = "",
.params = "",
.help = "show the cpu registers",
- .mhandler.info = do_info_registers,
+ .mhandler.cmd = do_info_registers,
},
{
.name = "cpus",
.args_type = "",
.params = "",
.help = "show infos for each CPU",
- .mhandler.info = hmp_info_cpus,
+ .mhandler.cmd = hmp_info_cpus,
},
{
.name = "history",
.args_type = "",
.params = "",
.help = "show the command line history",
- .mhandler.info = do_info_history,
+ .mhandler.cmd = do_info_history,
},
#if defined(TARGET_I386) || defined(TARGET_PPC) || defined(TARGET_MIPS) || \
defined(TARGET_LM32) || (defined(TARGET_SPARC) && !defined(TARGET_SPARC64))
@@ -2508,11 +2507,11 @@ static mon_cmd_t info_cmds[] = {
.params = "",
.help = "show the interrupts statistics (if available)",
#ifdef TARGET_SPARC
- .mhandler.info = sun4m_irq_info,
+ .mhandler.cmd = sun4m_irq_info,
#elif defined(TARGET_LM32)
- .mhandler.info = lm32_irq_info,
+ .mhandler.cmd = lm32_irq_info,
#else
- .mhandler.info = irq_info,
+ .mhandler.cmd = irq_info,
#endif
},
{
@@ -2521,11 +2520,11 @@ static mon_cmd_t info_cmds[] = {
.params = "",
.help = "show i8259 (PIC) state",
#ifdef TARGET_SPARC
- .mhandler.info = sun4m_pic_info,
+ .mhandler.cmd = sun4m_pic_info,
#elif defined(TARGET_LM32)
- .mhandler.info = lm32_do_pic_info,
+ .mhandler.cmd = lm32_do_pic_info,
#else
- .mhandler.info = pic_info,
+ .mhandler.cmd = pic_info,
#endif
},
#endif
@@ -2534,7 +2533,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show PCI info",
- .mhandler.info = hmp_info_pci,
+ .mhandler.cmd = hmp_info_pci,
},
#if defined(TARGET_I386) || defined(TARGET_SH4) || defined(TARGET_SPARC) || \
defined(TARGET_PPC) || defined(TARGET_XTENSA)
@@ -2543,7 +2542,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show virtual to physical memory mappings",
- .mhandler.info = tlb_info,
+ .mhandler.cmd = tlb_info,
},
#endif
#if defined(TARGET_I386)
@@ -2552,7 +2551,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show the active virtual memory mappings",
- .mhandler.info = mem_info,
+ .mhandler.cmd = mem_info,
},
#endif
{
@@ -2560,91 +2559,91 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show memory tree",
- .mhandler.info = do_info_mtree,
+ .mhandler.cmd = do_info_mtree,
},
{
.name = "jit",
.args_type = "",
.params = "",
.help = "show dynamic compiler info",
- .mhandler.info = do_info_jit,
+ .mhandler.cmd = do_info_jit,
},
{
.name = "kvm",
.args_type = "",
.params = "",
.help = "show KVM information",
- .mhandler.info = hmp_info_kvm,
+ .mhandler.cmd = hmp_info_kvm,
},
{
.name = "numa",
.args_type = "",
.params = "",
.help = "show NUMA information",
- .mhandler.info = do_info_numa,
+ .mhandler.cmd = do_info_numa,
},
{
.name = "usb",
.args_type = "",
.params = "",
.help = "show guest USB devices",
- .mhandler.info = usb_info,
+ .mhandler.cmd = usb_info,
},
{
.name = "usbhost",
.args_type = "",
.params = "",
.help = "show host USB devices",
- .mhandler.info = usb_host_info,
+ .mhandler.cmd = usb_host_info,
},
{
.name = "profile",
.args_type = "",
.params = "",
.help = "show profiling information",
- .mhandler.info = do_info_profile,
+ .mhandler.cmd = do_info_profile,
},
{
.name = "capture",
.args_type = "",
.params = "",
.help = "show capture information",
- .mhandler.info = do_info_capture,
+ .mhandler.cmd = do_info_capture,
},
{
.name = "snapshots",
.args_type = "",
.params = "",
.help = "show the currently saved VM snapshots",
- .mhandler.info = do_info_snapshots,
+ .mhandler.cmd = do_info_snapshots,
},
{
.name = "status",
.args_type = "",
.params = "",
.help = "show the current VM status (running|paused)",
- .mhandler.info = hmp_info_status,
+ .mhandler.cmd = hmp_info_status,
},
{
.name = "pcmcia",
.args_type = "",
.params = "",
.help = "show guest PCMCIA status",
- .mhandler.info = pcmcia_info,
+ .mhandler.cmd = pcmcia_info,
},
{
.name = "mice",
.args_type = "",
.params = "",
.help = "show which guest mouse is receiving events",
- .mhandler.info = hmp_info_mice,
+ .mhandler.cmd = hmp_info_mice,
},
{
.name = "vnc",
.args_type = "",
.params = "",
.help = "show the vnc server status",
- .mhandler.info = hmp_info_vnc,
+ .mhandler.cmd = hmp_info_vnc,
},
#if defined(CONFIG_SPICE)
{
@@ -2652,7 +2651,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show the spice server status",
- .mhandler.info = hmp_info_spice,
+ .mhandler.cmd = hmp_info_spice,
},
#endif
{
@@ -2660,14 +2659,14 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show the current VM name",
- .mhandler.info = hmp_info_name,
+ .mhandler.cmd = hmp_info_name,
},
{
.name = "uuid",
.args_type = "",
.params = "",
.help = "show the current VM UUID",
- .mhandler.info = hmp_info_uuid,
+ .mhandler.cmd = hmp_info_uuid,
},
#if defined(TARGET_PPC)
{
@@ -2675,7 +2674,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show CPU statistics",
- .mhandler.info = do_info_cpu_stats,
+ .mhandler.cmd = do_info_cpu_stats,
},
#endif
#if defined(CONFIG_SLIRP)
@@ -2684,7 +2683,7 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show user network stack connection states",
- .mhandler.info = do_info_usernet,
+ .mhandler.cmd = do_info_usernet,
},
#endif
{
@@ -2692,56 +2691,56 @@ static mon_cmd_t info_cmds[] = {
.args_type = "",
.params = "",
.help = "show migration status",
- .mhandler.info = hmp_info_migrate,
+ .mhandler.cmd = hmp_info_migrate,
},
{
.name = "migrate_capabilities",
.args_type = "",
.params = "",
.help = "show current migration capabilities",
- .mhandler.info = hmp_info_migrate_capabilities,
+ .mhandler.cmd = hmp_info_migrate_capabilities,
},
{
.name = "migrate_cache_size",
.args_type = "",
.params = "",
.help = "show current migration xbzrle cache size",
- .mhandler.info = hmp_info_migrate_cache_size,
+ .mhandler.cmd = hmp_info_migrate_cache_size,
},
{
.name = "balloon",
.args_type = "",
.params = "",
.help = "show balloon information",
- .mhandler.info = hmp_info_balloon,
+ .mhandler.cmd = hmp_info_balloon,
},
{
.name = "qtree",
.args_type = "",
.params = "",
.help = "show device tree",
- .mhandler.info = do_info_qtree,
+ .mhandler.cmd = do_info_qtree,
},
{
.name = "qdm",
.args_type = "",
.params = "",
.help = "show qdev device model list",
- .mhandler.info = do_info_qdm,
+ .mhandler.cmd = do_info_qdm,
},
{
.name = "roms",
.args_type = "",
.params = "",
.help = "show roms",
- .mhandler.info = do_info_roms,
+ .mhandler.cmd = do_info_roms,
},
{
.name = "trace-events",
.args_type = "",
.params = "",
.help = "show available trace-events & their state",
- .mhandler.info = do_trace_print_events,
+ .mhandler.cmd = do_trace_print_events,
},
{
.name = NULL,
--
1.8.1.GIT
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 3/5] HMP: add infrastructure for sub command
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 1/5] HMP: add QDict to info callback handler Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 2/5] HMP: delete info handler Luiz Capitulino
@ 2013-01-17 15:12 ` Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 4/5] HMP: move define of mon_cmds Luiz Capitulino
` (2 subsequent siblings)
5 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
This patch make parsing of hmp command aware of that it may
have sub command. Also discard simple encapsulation function
monitor_find_command(). For case "@command ", space after
@command is filtered out.
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 49 +++++++++++++++++++++++++++++++++++++++----------
1 file changed, 39 insertions(+), 10 deletions(-)
diff --git a/monitor.c b/monitor.c
index 6e87b5c..a77dd3b 100644
--- a/monitor.c
+++ b/monitor.c
@@ -129,6 +129,11 @@ typedef struct mon_cmd_t {
MonitorCompletion *cb, void *opaque);
} mhandler;
int flags;
+ /* @sub_table is a list of 2nd level of commands. If it do not exist,
+ * mhandler should be used. If it exist, sub_table[?].mhandler should be
+ * used, and mhandler of 1st level plays the role of help function.
+ */
+ struct mon_cmd_t *sub_table;
} mon_cmd_t;
/* file descriptors passed via SCM_RIGHTS */
@@ -3541,18 +3546,27 @@ static const mon_cmd_t *search_dispatch_table(const mon_cmd_t *disp_table,
return NULL;
}
-static const mon_cmd_t *monitor_find_command(const char *cmdname)
-{
- return search_dispatch_table(mon_cmds, cmdname);
-}
-
static const mon_cmd_t *qmp_find_cmd(const char *cmdname)
{
return search_dispatch_table(qmp_cmds, cmdname);
}
+/*
+ * Parse @cmdline according to command table @table.
+ * If @cmdline is blank, return NULL.
+ * If it can't be parsed, report to @mon, and return NULL.
+ * Else, insert command arguments into @qdict, and return the command.
+ * If sub-command table exist, and if @cmdline contains addtional string for
+ * sub-command, this function will try search sub-command table. if no
+ * addtional string for sub-command exist, this function will return the found
+ * one in @table.
+ * Do not assume the returned command points into @table! It doesn't
+ * when the command is a sub-command.
+ */
static const mon_cmd_t *monitor_parse_command(Monitor *mon,
const char *cmdline,
+ int start,
+ mon_cmd_t *table,
QDict *qdict)
{
const char *p, *typestr;
@@ -3563,20 +3577,35 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon,
char *key;
#ifdef DEBUG
- monitor_printf(mon, "command='%s'\n", cmdline);
+ monitor_printf(mon, "command='%s', start='%d'\n", cmdline, start);
#endif
/* extract the command name */
- p = get_command_name(cmdline, cmdname, sizeof(cmdname));
+ p = get_command_name(cmdline + start, cmdname, sizeof(cmdname));
if (!p)
return NULL;
- cmd = monitor_find_command(cmdname);
+ cmd = search_dispatch_table(table, cmdname);
if (!cmd) {
- monitor_printf(mon, "unknown command: '%s'\n", cmdname);
+ monitor_printf(mon, "unknown command: '%.*s'\n",
+ (int)(p - cmdline), cmdline);
return NULL;
}
+ /* filter out following useless space */
+ while (qemu_isspace(*p)) {
+ p++;
+ }
+ /* search sub command */
+ if (cmd->sub_table != NULL) {
+ /* check if user set additional command */
+ if (*p == '\0') {
+ return cmd;
+ }
+ return monitor_parse_command(mon, cmdline, p - cmdline,
+ cmd->sub_table, qdict);
+ }
+
/* parse the parameters */
typestr = cmd->args_type;
for(;;) {
@@ -3932,7 +3961,7 @@ static void handle_user_command(Monitor *mon, const char *cmdline)
qdict = qdict_new();
- cmd = monitor_parse_command(mon, cmdline, qdict);
+ cmd = monitor_parse_command(mon, cmdline, 0, mon_cmds, qdict);
if (!cmd)
goto out;
--
1.8.1.GIT
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 4/5] HMP: move define of mon_cmds
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (2 preceding siblings ...)
2013-01-17 15:12 ` [Qemu-devel] [PULL 3/5] HMP: add infrastructure for sub command Luiz Capitulino
@ 2013-01-17 15:12 ` Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 5/5] HMP: add sub command table to info Luiz Capitulino
2013-01-20 20:49 ` [Qemu-devel] [PULL 0/5] QMP queue Anthony Liguori
5 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Because mon_cmds may use info_cmds, so adjust the declare sequence
of them.
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
monitor.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/monitor.c b/monitor.c
index a77dd3b..ef1b7ac 100644
--- a/monitor.c
+++ b/monitor.c
@@ -2433,12 +2433,6 @@ int monitor_handle_fd_param(Monitor *mon, const char *fdname)
return fd;
}
-/* mon_cmds and info_cmds would be sorted at runtime */
-static mon_cmd_t mon_cmds[] = {
-#include "hmp-commands.h"
- { NULL, NULL, },
-};
-
/* Please update hmp-commands.hx when adding or changing commands */
static mon_cmd_t info_cmds[] = {
{
@@ -2752,6 +2746,12 @@ static mon_cmd_t info_cmds[] = {
},
};
+/* mon_cmds and info_cmds would be sorted at runtime */
+static mon_cmd_t mon_cmds[] = {
+#include "hmp-commands.h"
+ { NULL, NULL, },
+};
+
static const mon_cmd_t qmp_cmds[] = {
#include "qmp-commands-old.h"
{ /* NULL */ },
--
1.8.1.GIT
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 5/5] HMP: add sub command table to info
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (3 preceding siblings ...)
2013-01-17 15:12 ` [Qemu-devel] [PULL 4/5] HMP: move define of mon_cmds Luiz Capitulino
@ 2013-01-17 15:12 ` Luiz Capitulino
2013-01-20 20:49 ` [Qemu-devel] [PULL 0/5] QMP queue Anthony Liguori
5 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2013-01-17 15:12 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
From: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Now info command takes a table of sub info commands,
and changed do_info() to do_info_help() to do help funtion
only.
Note that now "info <unknown-topic>" returns error instead
of list of info topics.
Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
hmp-commands.hx | 3 ++-
monitor.c | 22 +---------------------
2 files changed, 3 insertions(+), 22 deletions(-)
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 67569ef..0934b9b 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1521,7 +1521,8 @@ ETEXI
.args_type = "item:s?",
.params = "[subcommand]",
.help = "show various information about the system state",
- .mhandler.cmd = do_info,
+ .mhandler.cmd = do_info_help,
+ .sub_table = info_cmds,
},
STEXI
diff --git a/monitor.c b/monitor.c
index ef1b7ac..20bd19b 100644
--- a/monitor.c
+++ b/monitor.c
@@ -811,28 +811,8 @@ static void user_async_cmd_handler(Monitor *mon, const mon_cmd_t *cmd,
}
}
-static void do_info(Monitor *mon, const QDict *qdict)
+static void do_info_help(Monitor *mon, const QDict *qdict)
{
- const mon_cmd_t *cmd;
- const char *item = qdict_get_try_str(qdict, "item");
-
- if (!item) {
- goto help;
- }
-
- for (cmd = info_cmds; cmd->name != NULL; cmd++) {
- if (compare_cmd(item, cmd->name))
- break;
- }
-
- if (cmd->name == NULL) {
- goto help;
- }
-
- cmd->mhandler.cmd(mon, NULL);
- return;
-
-help:
help_cmd(mon, "info");
}
--
1.8.1.GIT
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5] QMP queue
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
` (4 preceding siblings ...)
2013-01-17 15:12 ` [Qemu-devel] [PULL 5/5] HMP: add sub command table to info Luiz Capitulino
@ 2013-01-20 20:49 ` Anthony Liguori
5 siblings, 0 replies; 16+ messages in thread
From: Anthony Liguori @ 2013-01-20 20:49 UTC (permalink / raw)
To: Luiz Capitulino, qemu-devel; +Cc: aliguori
Pulled. Thanks.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 0/5] QMP queue
@ 2014-01-28 17:27 Luiz Capitulino
2014-02-01 23:41 ` Peter Maydell
0 siblings, 1 reply; 16+ messages in thread
From: Luiz Capitulino @ 2014-01-28 17:27 UTC (permalink / raw)
To: anthony; +Cc: qemu-devel
The changes (since 0169c511554cb0014a00290b0d3d26c31a49818f) are available
in the following repository:
git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Igor Mammedov (4):
object_add: consolidate error handling
vl.c: -object: don't ignore duplicate 'id'
add optional 2nd stage initialization to -object/object-add commands
virtio_rng: replace custom backend API with UserCreatable.complete()
callback
Stratos Psomadakis (1):
monitor: Cleanup mon->outbuf on write error
backends/rng.c | 17 +++++++++--
hw/virtio/virtio-rng.c | 15 ++++++----
include/qom/object_interfaces.h | 62 +++++++++++++++++++++++++++++++++++++++++
include/sysemu/rng.h | 11 --------
monitor.c | 4 +--
qmp.c | 22 ++++++++++++---
qom/Makefile.objs | 1 +
qom/object_interfaces.c | 32 +++++++++++++++++++++
vl.c | 22 ++++++++++++++-
9 files changed, 160 insertions(+), 26 deletions(-)
create mode 100644 include/qom/object_interfaces.h
create mode 100644 qom/object_interfaces.c
--
1.8.1.4
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5] QMP queue
2014-01-28 17:27 Luiz Capitulino
@ 2014-02-01 23:41 ` Peter Maydell
0 siblings, 0 replies; 16+ messages in thread
From: Peter Maydell @ 2014-02-01 23:41 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: QEMU Developers, Anthony Liguori
On 28 January 2014 17:27, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> The changes (since 0169c511554cb0014a00290b0d3d26c31a49818f) are available
> in the following repository:
>
> git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 16+ messages in thread
* [Qemu-devel] [PULL 0/5] QMP queue
@ 2015-03-04 19:13 Luiz Capitulino
2015-03-08 14:08 ` Peter Maydell
0 siblings, 1 reply; 16+ messages in thread
From: Luiz Capitulino @ 2015-03-04 19:13 UTC (permalink / raw)
To: peter.maydell; +Cc: qemu-devel
Hi,
This pull request contains two series. A balloon series and memory hotplug
doc series. The balloon series is not totally QMP related, but it has
implications to libvirt when using memory hotplug. So, I'm picking it up.
The second series is a memory hotplug doc improvement. This is not QMP
related at all, but I'm adding it here as it got fully reviewed and is
really wanted.
The following changes since commit 3539bbb93e944ffde31c61c369ea9eedcc5697a6:
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20150302.0' into staging (2015-03-04 14:37:31 +0000)
are available in the git repository at:
git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
for you to fetch changes up to a3b042179859c68b3d08f8aa43866d28d6b56987:
docs: add memory-hotplug.txt (2015-03-04 13:00:36 -0500)
----------------------------------------------------------------
Luiz Capitulino (2):
qemu-options.hx: improve -m description
docs: add memory-hotplug.txt
zhanghailiang (3):
pc-dimm: add a function to calculate VM's current RAM size
virtio-balloon: Fix balloon not working correctly when hotplug memory
virtio-balloon: Add some trace events
docs/memory-hotplug.txt | 76 +++++++++++++++++++++++++++++++++++++++++
hw/mem/pc-dimm.c | 26 ++++++++++++++
hw/virtio/virtio-balloon.c | 21 ++++++++----
include/exec/cpu-common.h | 1 +
qemu-options.hx | 22 +++++++++---
stubs/qmp_pc_dimm_device_list.c | 5 +++
trace-events | 4 +++
7 files changed, 144 insertions(+), 11 deletions(-)
create mode 100644 docs/memory-hotplug.txt
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5] QMP queue
2015-03-04 19:13 Luiz Capitulino
@ 2015-03-08 14:08 ` Peter Maydell
2015-03-09 13:03 ` Luiz Capitulino
0 siblings, 1 reply; 16+ messages in thread
From: Peter Maydell @ 2015-03-08 14:08 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: QEMU Developers
On 5 March 2015 at 04:13, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> Hi,
>
> This pull request contains two series. A balloon series and memory hotplug
> doc series. The balloon series is not totally QMP related, but it has
> implications to libvirt when using memory hotplug. So, I'm picking it up.
> The second series is a memory hotplug doc improvement. This is not QMP
> related at all, but I'm adding it here as it got fully reviewed and is
> really wanted.
>
> The following changes since commit 3539bbb93e944ffde31c61c369ea9eedcc5697a6:
>
> Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20150302.0' into staging (2015-03-04 14:37:31 +0000)
>
> are available in the git repository at:
>
>
> git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
>
> for you to fetch changes up to a3b042179859c68b3d08f8aa43866d28d6b56987:
>
> docs: add memory-hotplug.txt (2015-03-04 13:00:36 -0500)
Nudge: this isn't a signed pull request. I'm not currently rejecting
unsigned pulls, but at some point in the not very distant future
(maybe after 2.3?) I plan to start doing so...
That said, I've applied this to master.
thanks
-- PMM
-- PMM
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [Qemu-devel] [PULL 0/5] QMP queue
2015-03-08 14:08 ` Peter Maydell
@ 2015-03-09 13:03 ` Luiz Capitulino
0 siblings, 0 replies; 16+ messages in thread
From: Luiz Capitulino @ 2015-03-09 13:03 UTC (permalink / raw)
To: Peter Maydell; +Cc: QEMU Developers
On Sun, 8 Mar 2015 23:08:04 +0900
Peter Maydell <peter.maydell@linaro.org> wrote:
> On 5 March 2015 at 04:13, Luiz Capitulino <lcapitulino@redhat.com> wrote:
> > Hi,
> >
> > This pull request contains two series. A balloon series and memory hotplug
> > doc series. The balloon series is not totally QMP related, but it has
> > implications to libvirt when using memory hotplug. So, I'm picking it up.
> > The second series is a memory hotplug doc improvement. This is not QMP
> > related at all, but I'm adding it here as it got fully reviewed and is
> > really wanted.
> >
> > The following changes since commit 3539bbb93e944ffde31c61c369ea9eedcc5697a6:
> >
> > Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20150302.0' into staging (2015-03-04 14:37:31 +0000)
> >
> > are available in the git repository at:
> >
> >
> > git://repo.or.cz/qemu/qmp-unstable.git queue/qmp
> >
> > for you to fetch changes up to a3b042179859c68b3d08f8aa43866d28d6b56987:
> >
> > docs: add memory-hotplug.txt (2015-03-04 13:00:36 -0500)
>
> Nudge: this isn't a signed pull request. I'm not currently rejecting
> unsigned pulls, but at some point in the not very distant future
> (maybe after 2.3?) I plan to start doing so...
My bad. I knew there was something missing when I was fixing my
scripts after a long time without sending pull requests. Sorry
about that.
> That said, I've applied this to master.
Thanks.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2015-03-09 13:03 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-17 15:12 [Qemu-devel] [PULL 0/5] QMP queue Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 1/5] HMP: add QDict to info callback handler Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 2/5] HMP: delete info handler Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 3/5] HMP: add infrastructure for sub command Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 4/5] HMP: move define of mon_cmds Luiz Capitulino
2013-01-17 15:12 ` [Qemu-devel] [PULL 5/5] HMP: add sub command table to info Luiz Capitulino
2013-01-20 20:49 ` [Qemu-devel] [PULL 0/5] QMP queue Anthony Liguori
-- strict thread matches above, loose matches on Subject: below --
2015-03-04 19:13 Luiz Capitulino
2015-03-08 14:08 ` Peter Maydell
2015-03-09 13:03 ` Luiz Capitulino
2014-01-28 17:27 Luiz Capitulino
2014-02-01 23:41 ` Peter Maydell
2012-02-23 14:42 [Qemu-devel] [PULL 0/5]: " Luiz Capitulino
2012-02-24 16:35 ` Anthony Liguori
2011-10-14 17:26 Luiz Capitulino
2011-10-20 15:01 ` Anthony Liguori
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).