Patchwork [V2,1/3] HMP: add QDict to info callback handler

login
register
mail settings
Submitter Wayne Xia
Date Dec. 27, 2012, 8:56 a.m.
Message ID <1356598589-5744-2-git-send-email-xiawenc@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/208283/
State New
Headers show

Comments

Wayne Xia - Dec. 27, 2012, 8:56 a.m.
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.

v2: rebased, and better doc.

Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.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(-)
陳韋任 - Dec. 27, 2012, 9:03 a.m.
On Thu, Dec 27, 2012 at 04:56:27PM +0800, Wenchao Xia wrote:
>   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.
> 
> v2: rebased, and better doc.
> 
> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
> ---

  I remember the change log should be put here, right?

>  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 9e9e624..2465d9b 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 21f3e05..5cab9c0 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 8fc6339..51b4b3c 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 42d5602..a327425 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 a73e3e7..fb6cbe2 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 b739867..e0f0075 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 0d84b37..db23671 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 81e265c..a24e9e0 100644
> --- a/hw/usb.h
> +++ b/hw/usb.h
> @@ -429,7 +429,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 10260a1..b58e421 100644
> --- a/hw/usb/bus.c
> +++ b/hw/usb/bus.c
> @@ -534,7 +534,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 340c21a..bed54c6 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 669fbd2..cdacc54 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 28a783e..a7fd0be 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 9cf419b..c7b3014 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,
> @@ -824,7 +824,7 @@ static void do_info(Monitor *mon, const QDict *qdict)
>          goto help;
>      }
>  
> -    cmd->mhandler.info(mon);
> +    cmd->mhandler.info(mon, NULL);
>      return;
>  
>  help:
> @@ -895,19 +895,19 @@ int monitor_get_cpu_index(void)
>      return mon_get_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;
> @@ -926,7 +926,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;
>  
> @@ -935,7 +935,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);
>  }
> @@ -1487,7 +1487,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;
>  
> @@ -1710,7 +1710,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;
>  
> @@ -1749,7 +1749,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;
> @@ -1765,7 +1765,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();
>  
> @@ -1773,12 +1773,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;
> @@ -1802,7 +1802,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;
> @@ -1816,7 +1816,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");
>  }
> @@ -1825,7 +1825,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 dbf3e1b..354d292 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 bcdb92e..720eea6 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -2371,7 +2371,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 e6a8d89..1905266 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1263,7 +1263,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.7.1
> 
>
Wayne Xia - Dec. 27, 2012, 9:34 a.m.
> On Thu, Dec 27, 2012 at 04:56:27PM +0800, Wenchao Xia wrote:
>>    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.
>>
>> v2: rebased, and better doc.
>>
>> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
>> ---
>
>    I remember the change log should be put here, right?
>
   I used to put changelog in commit message, let me resend it.

>>   hmp.c                   |   36 ++++++++++++++++++------------------
>>   hmp.h                   |   36 ++++++++++++++++++------------------
>>   hw/i8259.c              |    4 ++--
>>   hw/lm32_pic.c           |    4 ++--
>>   hw/lm32_pic.h           |    4 ++--
Wayne Xia - Dec. 27, 2012, 9:39 a.m.
Sorry I forgot to change the version number, pls ignore this serial.

>  > On Thu, Dec 27, 2012 at 04:56:27PM +0800, Wenchao Xia wrote:
>>>    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.
>>>
>>> v2: rebased, and better doc.
>>>
>>> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
>>> ---
>>
>>    I remember the change log should be put here, right?
>>
>    I used to put changelog in commit message, let me resend it.
>
>>>   hmp.c                   |   36 ++++++++++++++++++------------------
>>>   hmp.h                   |   36 ++++++++++++++++++------------------
>>>   hw/i8259.c              |    4 ++--
>>>   hw/lm32_pic.c           |    4 ++--
>>>   hw/lm32_pic.h           |    4 ++--
>
>
>

Patch

diff --git a/hmp.c b/hmp.c
index 9e9e624..2465d9b 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 21f3e05..5cab9c0 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 8fc6339..51b4b3c 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 42d5602..a327425 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 a73e3e7..fb6cbe2 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 b739867..e0f0075 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 0d84b37..db23671 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 81e265c..a24e9e0 100644
--- a/hw/usb.h
+++ b/hw/usb.h
@@ -429,7 +429,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 10260a1..b58e421 100644
--- a/hw/usb/bus.c
+++ b/hw/usb/bus.c
@@ -534,7 +534,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 340c21a..bed54c6 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 669fbd2..cdacc54 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 28a783e..a7fd0be 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 9cf419b..c7b3014 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,
@@ -824,7 +824,7 @@  static void do_info(Monitor *mon, const QDict *qdict)
         goto help;
     }
 
-    cmd->mhandler.info(mon);
+    cmd->mhandler.info(mon, NULL);
     return;
 
 help:
@@ -895,19 +895,19 @@  int monitor_get_cpu_index(void)
     return mon_get_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;
@@ -926,7 +926,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;
 
@@ -935,7 +935,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);
 }
@@ -1487,7 +1487,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;
 
@@ -1710,7 +1710,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;
 
@@ -1749,7 +1749,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;
@@ -1765,7 +1765,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();
 
@@ -1773,12 +1773,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;
@@ -1802,7 +1802,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;
@@ -1816,7 +1816,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");
 }
@@ -1825,7 +1825,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 dbf3e1b..354d292 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 bcdb92e..720eea6 100644
--- a/savevm.c
+++ b/savevm.c
@@ -2371,7 +2371,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 e6a8d89..1905266 100644
--- a/vl.c
+++ b/vl.c
@@ -1263,7 +1263,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;