hmp-commands-info: move info_cmds content out of monitor.c

For moving target- and device-specific code  from monitor.c,
to beginning we move info_cmds content to hmp-commands-info.hx

Signed-off-by: Pavel Butsykin <pbutsykin@virtuozzo.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <1441899541-1856-2-git-send-email-den@openvz.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Pavel Butsykin 2015-09-10 18:38:58 +03:00 committed by Paolo Bonzini
parent f2a53c9e05
commit da76ee76f7
3 changed files with 747 additions and 388 deletions

View File

@ -151,7 +151,7 @@ else
obj-y += hw/$(TARGET_BASE_ARCH)/
endif
GENERATED_HEADERS += hmp-commands.h qmp-commands-old.h
GENERATED_HEADERS += hmp-commands.h hmp-commands-info.h qmp-commands-old.h
endif # CONFIG_SOFTMMU
@ -193,6 +193,9 @@ gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh
hmp-commands.h: $(SRC_PATH)/hmp-commands.hx
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@")
hmp-commands-info.h: $(SRC_PATH)/hmp-commands-info.hx
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@")
qmp-commands-old.h: $(SRC_PATH)/qmp-commands.hx
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@")

741
hmp-commands-info.hx Normal file
View File

@ -0,0 +1,741 @@
HXCOMM Use DEFHEADING() to define headings in both help text and texi
HXCOMM Text between STEXI and ETEXI are copied to texi version and
HXCOMM discarded from C version
HXCOMM DEF(command, args, callback, arg_string, help) is used to construct
HXCOMM monitor info commands
HXCOMM HXCOMM can be used for comments, discarded from both texi and C
STEXI
@table @option
ETEXI
{
.name = "version",
.args_type = "",
.params = "",
.help = "show the version of QEMU",
.mhandler.cmd = hmp_info_version,
},
STEXI
@item info version
@findex version
Show the version of QEMU.
ETEXI
{
.name = "network",
.args_type = "",
.params = "",
.help = "show the network state",
.mhandler.cmd = hmp_info_network,
},
STEXI
@item info network
@findex network
Show the network state.
ETEXI
{
.name = "chardev",
.args_type = "",
.params = "",
.help = "show the character devices",
.mhandler.cmd = hmp_info_chardev,
},
STEXI
@item info chardev
@findex chardev
Show the character devices.
ETEXI
{
.name = "block",
.args_type = "nodes:-n,verbose:-v,device:B?",
.params = "[-n] [-v] [device]",
.help = "show info of one block device or all block devices "
"(-n: show named nodes; -v: show details)",
.mhandler.cmd = hmp_info_block,
},
STEXI
@item info block
@findex block
Show info of one block device or all block devices.
ETEXI
{
.name = "blockstats",
.args_type = "",
.params = "",
.help = "show block device statistics",
.mhandler.cmd = hmp_info_blockstats,
},
STEXI
@item info blockstats
@findex blockstats
Show block device statistics.
ETEXI
{
.name = "block-jobs",
.args_type = "",
.params = "",
.help = "show progress of ongoing block device operations",
.mhandler.cmd = hmp_info_block_jobs,
},
STEXI
@item info block-jobs
@findex block-jobs
Show progress of ongoing block device operations.
ETEXI
{
.name = "registers",
.args_type = "",
.params = "",
.help = "show the cpu registers",
.mhandler.cmd = hmp_info_registers,
},
STEXI
@item info registers
@findex registers
Show the cpu registers.
ETEXI
{
.name = "cpus",
.args_type = "",
.params = "",
.help = "show infos for each CPU",
.mhandler.cmd = hmp_info_cpus,
},
STEXI
@item info cpus
@findex cpus
Show infos for each CPU.
ETEXI
{
.name = "history",
.args_type = "",
.params = "",
.help = "show the command line history",
.mhandler.cmd = hmp_info_history,
},
STEXI
@item info history
@findex history
Show the command line history.
ETEXI
#if defined(TARGET_I386) || defined(TARGET_PPC) || defined(TARGET_MIPS) || \
defined(TARGET_LM32) || (defined(TARGET_SPARC) && !defined(TARGET_SPARC64))
{
.name = "irq",
.args_type = "",
.params = "",
.help = "show the interrupts statistics (if available)",
#ifdef TARGET_SPARC
.mhandler.cmd = sun4m_hmp_info_irq,
#elif defined(TARGET_LM32)
.mhandler.cmd = lm32_hmp_info_irq,
#else
.mhandler.cmd = hmp_info_irq,
#endif
},
STEXI
@item info irq
@findex irq
Show the interrupts statistics (if available).
ETEXI
{
.name = "pic",
.args_type = "",
.params = "",
.help = "show i8259 (PIC) state",
#ifdef TARGET_SPARC
.mhandler.cmd = sun4m_hmp_info_pic,
#elif defined(TARGET_LM32)
.mhandler.cmd = lm32_hmp_info_pic,
#else
.mhandler.cmd = hmp_info_pic,
#endif
},
#endif
STEXI
@item info pic
@findex pic
Show i8259 (PIC) state.
ETEXI
#if defined(TARGET_I386) || defined(TARGET_SH4) || defined(TARGET_SPARC) || \
defined(TARGET_PPC) || defined(TARGET_XTENSA)
{
.name = "tlb",
.args_type = "",
.params = "",
.help = "show virtual to physical memory mappings",
.mhandler.cmd = hmp_info_tlb,
},
#endif
STEXI
@item info tlb
@findex tlb
Show virtual to physical memory mappings.
ETEXI
#if defined(TARGET_I386)
{
.name = "mem",
.args_type = "",
.params = "",
.help = "show the active virtual memory mappings",
.mhandler.cmd = hmp_info_mem,
},
#endif
STEXI
@item info mem
@findex mem
Show the active virtual memory mappings.
ETEXI
{
.name = "mtree",
.args_type = "",
.params = "",
.help = "show memory tree",
.mhandler.cmd = hmp_info_mtree,
},
STEXI
@item info mtree
@findex mtree
Show memory tree.
ETEXI
{
.name = "jit",
.args_type = "",
.params = "",
.help = "show dynamic compiler info",
.mhandler.cmd = hmp_info_jit,
},
STEXI
@item info jit
@findex jit
Show dynamic compiler info.
ETEXI
{
.name = "opcount",
.args_type = "",
.params = "",
.help = "show dynamic compiler opcode counters",
.mhandler.cmd = hmp_info_opcount,
},
STEXI
@item info opcount
@findex opcount
Show dynamic compiler opcode counters
ETEXI
{
.name = "kvm",
.args_type = "",
.params = "",
.help = "show KVM information",
.mhandler.cmd = hmp_info_kvm,
},
STEXI
@item info kvm
@findex kvm
Show KVM information.
ETEXI
{
.name = "numa",
.args_type = "",
.params = "",
.help = "show NUMA information",
.mhandler.cmd = hmp_info_numa,
},
STEXI
@item info numa
@findex numa
Show NUMA information.
ETEXI
{
.name = "usb",
.args_type = "",
.params = "",
.help = "show guest USB devices",
.mhandler.cmd = hmp_info_usb,
},
STEXI
@item info usb
@findex usb
Show guest USB devices.
ETEXI
{
.name = "usbhost",
.args_type = "",
.params = "",
.help = "show host USB devices",
.mhandler.cmd = hmp_info_usbhost,
},
STEXI
@item info usbhost
@findex usbhost
Show host USB devices.
ETEXI
{
.name = "profile",
.args_type = "",
.params = "",
.help = "show profiling information",
.mhandler.cmd = hmp_info_profile,
},
STEXI
@item info profile
@findex profile
Show profiling information.
ETEXI
{
.name = "capture",
.args_type = "",
.params = "",
.help = "show capture information",
.mhandler.cmd = hmp_info_capture,
},
STEXI
@item info capture
@findex capture
Show capture information.
ETEXI
{
.name = "snapshots",
.args_type = "",
.params = "",
.help = "show the currently saved VM snapshots",
.mhandler.cmd = hmp_info_snapshots,
},
STEXI
@item info snapshots
@findex snapshots
Show the currently saved VM snapshots.
ETEXI
{
.name = "status",
.args_type = "",
.params = "",
.help = "show the current VM status (running|paused)",
.mhandler.cmd = hmp_info_status,
},
STEXI
@item info status
@findex status
Show the current VM status (running|paused).
ETEXI
{
.name = "mice",
.args_type = "",
.params = "",
.help = "show which guest mouse is receiving events",
.mhandler.cmd = hmp_info_mice,
},
STEXI
@item info mice
@findex mice
Show which guest mouse is receiving events.
ETEXI
{
.name = "vnc",
.args_type = "",
.params = "",
.help = "show the vnc server status",
.mhandler.cmd = hmp_info_vnc,
},
STEXI
@item info vnc
@findex vnc
Show the vnc server status.
ETEXI
#if defined(CONFIG_SPICE)
{
.name = "spice",
.args_type = "",
.params = "",
.help = "show the spice server status",
.mhandler.cmd = hmp_info_spice,
},
#endif
STEXI
@item info spice
@findex spice
Show the spice server status.
ETEXI
{
.name = "name",
.args_type = "",
.params = "",
.help = "show the current VM name",
.mhandler.cmd = hmp_info_name,
},
STEXI
@item info name
@findex name
Show the current VM name.
ETEXI
{
.name = "uuid",
.args_type = "",
.params = "",
.help = "show the current VM UUID",
.mhandler.cmd = hmp_info_uuid,
},
STEXI
@item info uuid
@findex uuid
Show the current VM UUID.
ETEXI
{
.name = "cpustats",
.args_type = "",
.params = "",
.help = "show CPU statistics",
.mhandler.cmd = hmp_info_cpustats,
},
STEXI
@item info cpustats
@findex cpustats
Show CPU statistics.
ETEXI
#if defined(CONFIG_SLIRP)
{
.name = "usernet",
.args_type = "",
.params = "",
.help = "show user network stack connection states",
.mhandler.cmd = hmp_info_usernet,
},
#endif
STEXI
@item info usernet
@findex usernet
Show user network stack connection states.
ETEXI
{
.name = "migrate",
.args_type = "",
.params = "",
.help = "show migration status",
.mhandler.cmd = hmp_info_migrate,
},
STEXI
@item info migrate
@findex migrate
Show migration status.
ETEXI
{
.name = "migrate_capabilities",
.args_type = "",
.params = "",
.help = "show current migration capabilities",
.mhandler.cmd = hmp_info_migrate_capabilities,
},
STEXI
@item info migrate_capabilities
@findex migrate_capabilities
Show current migration capabilities.
ETEXI
{
.name = "migrate_parameters",
.args_type = "",
.params = "",
.help = "show current migration parameters",
.mhandler.cmd = hmp_info_migrate_parameters,
},
STEXI
@item info migrate_parameters
@findex migrate_parameters
Show current migration parameters.
ETEXI
{
.name = "migrate_cache_size",
.args_type = "",
.params = "",
.help = "show current migration xbzrle cache size",
.mhandler.cmd = hmp_info_migrate_cache_size,
},
STEXI
@item info migrate_cache_size
@findex migrate_cache_size
Show current migration xbzrle cache size.
ETEXI
{
.name = "balloon",
.args_type = "",
.params = "",
.help = "show balloon information",
.mhandler.cmd = hmp_info_balloon,
},
STEXI
@item info balloon
@findex balloon
Show balloon information.
ETEXI
{
.name = "qtree",
.args_type = "",
.params = "",
.help = "show device tree",
.mhandler.cmd = hmp_info_qtree,
},
STEXI
@item info qtree
@findex qtree
Show device tree.
ETEXI
{
.name = "qdm",
.args_type = "",
.params = "",
.help = "show qdev device model list",
.mhandler.cmd = hmp_info_qdm,
},
STEXI
@item info qdm
@findex qdm
Show qdev device model list.
ETEXI
{
.name = "qom-tree",
.args_type = "path:s?",
.params = "[path]",
.help = "show QOM composition tree",
.mhandler.cmd = hmp_info_qom_tree,
},
STEXI
@item info qom-tree
@findex qom-tree
Show QOM composition tree.
ETEXI
{
.name = "roms",
.args_type = "",
.params = "",
.help = "show roms",
.mhandler.cmd = hmp_info_roms,
},
STEXI
@item info roms
@findex roms
Show roms.
ETEXI
{
.name = "trace-events",
.args_type = "",
.params = "",
.help = "show available trace-events & their state",
.mhandler.cmd = hmp_info_trace_events,
},
STEXI
@item info trace-events
@findex trace-events
Show available trace-events & their state.
ETEXI
{
.name = "tpm",
.args_type = "",
.params = "",
.help = "show the TPM device",
.mhandler.cmd = hmp_info_tpm,
},
STEXI
@item info tpm
@findex tpm
Show the TPM device.
ETEXI
{
.name = "memdev",
.args_type = "",
.params = "",
.help = "show memory backends",
.mhandler.cmd = hmp_info_memdev,
},
STEXI
@item info memdev
@findex memdev
Show memory backends
ETEXI
{
.name = "memory-devices",
.args_type = "",
.params = "",
.help = "show memory devices",
.mhandler.cmd = hmp_info_memory_devices,
},
STEXI
@item info memory-devices
@findex memory-devices
Show memory devices.
ETEXI
{
.name = "iothreads",
.args_type = "",
.params = "",
.help = "show iothreads",
.mhandler.cmd = hmp_info_iothreads,
},
STEXI
@item info iothreads
@findex iothreads
Show iothread's identifiers.
ETEXI
{
.name = "rocker",
.args_type = "name:s",
.params = "name",
.help = "Show rocker switch",
.mhandler.cmd = hmp_rocker,
},
STEXI
@item info rocker @var{name}
@findex rocker
Show rocker switch.
ETEXI
{
.name = "rocker-ports",
.args_type = "name:s",
.params = "name",
.help = "Show rocker ports",
.mhandler.cmd = hmp_rocker_ports,
},
STEXI
@item info rocker_ports @var{name}-ports
@findex ocker-ports
Show rocker ports.
ETEXI
{
.name = "rocker-of-dpa-flows",
.args_type = "name:s,tbl_id:i?",
.params = "name [tbl_id]",
.help = "Show rocker OF-DPA flow tables",
.mhandler.cmd = hmp_rocker_of_dpa_flows,
},
STEXI
@item info rocker_of_dpa_flows @var{name} [@var{tbl_id}]
@findex rocker-of-dpa-flows
Show rocker OF-DPA flow tables.
ETEXI
{
.name = "rocker-of-dpa-groups",
.args_type = "name:s,type:i?",
.params = "name [type]",
.help = "Show rocker OF-DPA groups",
.mhandler.cmd = hmp_rocker_of_dpa_groups,
},
STEXI
@item info rocker-of-dpa-groups @var{name} [@var{type}]
@findex rocker-of-dpa-groups
Show rocker OF-DPA groups.
ETEXI
#if defined(TARGET_S390X)
{
.name = "skeys",
.args_type = "addr:l",
.params = "address",
.help = "Display the value of a storage key",
.mhandler.cmd = hmp_info_skeys,
},
#endif
STEXI
@item info skeys @var{address}
@findex skeys
Display the value of a storage key (s390 only)
ETEXI
STEXI
@end table
ETEXI

389
monitor.c
View File

@ -2513,393 +2513,8 @@ int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp)
/* Please update hmp-commands.hx when adding or changing commands */
static mon_cmd_t info_cmds[] = {
{
.name = "version",
.args_type = "",
.params = "",
.help = "show the version of QEMU",
.mhandler.cmd = hmp_info_version,
},
{
.name = "network",
.args_type = "",
.params = "",
.help = "show the network state",
.mhandler.cmd = hmp_info_network,
},
{
.name = "chardev",
.args_type = "",
.params = "",
.help = "show the character devices",
.mhandler.cmd = hmp_info_chardev,
},
{
.name = "block",
.args_type = "nodes:-n,verbose:-v,device:B?",
.params = "[-n] [-v] [device]",
.help = "show info of one block device or all block devices "
"(-n: show named nodes; -v: show details)",
.mhandler.cmd = hmp_info_block,
},
{
.name = "blockstats",
.args_type = "",
.params = "",
.help = "show block device statistics",
.mhandler.cmd = hmp_info_blockstats,
},
{
.name = "block-jobs",
.args_type = "",
.params = "",
.help = "show progress of ongoing block device operations",
.mhandler.cmd = hmp_info_block_jobs,
},
{
.name = "registers",
.args_type = "",
.params = "",
.help = "show the cpu registers",
.mhandler.cmd = hmp_info_registers,
},
{
.name = "cpus",
.args_type = "",
.params = "",
.help = "show infos for each CPU",
.mhandler.cmd = hmp_info_cpus,
},
{
.name = "history",
.args_type = "",
.params = "",
.help = "show the command line history",
.mhandler.cmd = hmp_info_history,
},
#if defined(TARGET_I386) || defined(TARGET_PPC) || defined(TARGET_MIPS) || \
defined(TARGET_LM32) || (defined(TARGET_SPARC) && !defined(TARGET_SPARC64))
{
.name = "irq",
.args_type = "",
.params = "",
.help = "show the interrupts statistics (if available)",
#ifdef TARGET_SPARC
.mhandler.cmd = sun4m_hmp_info_irq,
#elif defined(TARGET_LM32)
.mhandler.cmd = lm32_hmp_info_irq,
#else
.mhandler.cmd = hmp_info_irq,
#endif
},
{
.name = "pic",
.args_type = "",
.params = "",
.help = "show i8259 (PIC) state",
#ifdef TARGET_SPARC
.mhandler.cmd = sun4m_hmp_info_pic,
#elif defined(TARGET_LM32)
.mhandler.cmd = lm32_hmp_info_pic,
#else
.mhandler.cmd = hmp_info_pic,
#endif
},
#endif
{
.name = "pci",
.args_type = "",
.params = "",
.help = "show PCI info",
.mhandler.cmd = hmp_info_pci,
},
#if defined(TARGET_I386) || defined(TARGET_SH4) || defined(TARGET_SPARC) || \
defined(TARGET_PPC) || defined(TARGET_XTENSA)
{
.name = "tlb",
.args_type = "",
.params = "",
.help = "show virtual to physical memory mappings",
.mhandler.cmd = hmp_info_tlb,
},
#endif
#if defined(TARGET_I386)
{
.name = "mem",
.args_type = "",
.params = "",
.help = "show the active virtual memory mappings",
.mhandler.cmd = hmp_info_mem,
},
#endif
{
.name = "mtree",
.args_type = "",
.params = "",
.help = "show memory tree",
.mhandler.cmd = hmp_info_mtree,
},
{
.name = "jit",
.args_type = "",
.params = "",
.help = "show dynamic compiler info",
.mhandler.cmd = hmp_info_jit,
},
{
.name = "opcount",
.args_type = "",
.params = "",
.help = "show dynamic compiler opcode counters",
.mhandler.cmd = hmp_info_opcount,
},
{
.name = "kvm",
.args_type = "",
.params = "",
.help = "show KVM information",
.mhandler.cmd = hmp_info_kvm,
},
{
.name = "numa",
.args_type = "",
.params = "",
.help = "show NUMA information",
.mhandler.cmd = hmp_info_numa,
},
{
.name = "usb",
.args_type = "",
.params = "",
.help = "show guest USB devices",
.mhandler.cmd = hmp_info_usb,
},
{
.name = "usbhost",
.args_type = "",
.params = "",
.help = "show host USB devices",
.mhandler.cmd = hmp_info_usbhost,
},
{
.name = "profile",
.args_type = "",
.params = "",
.help = "show profiling information",
.mhandler.cmd = hmp_info_profile,
},
{
.name = "capture",
.args_type = "",
.params = "",
.help = "show capture information",
.mhandler.cmd = hmp_info_capture,
},
{
.name = "snapshots",
.args_type = "",
.params = "",
.help = "show the currently saved VM snapshots",
.mhandler.cmd = hmp_info_snapshots,
},
{
.name = "status",
.args_type = "",
.params = "",
.help = "show the current VM status (running|paused)",
.mhandler.cmd = hmp_info_status,
},
{
.name = "mice",
.args_type = "",
.params = "",
.help = "show which guest mouse is receiving events",
.mhandler.cmd = hmp_info_mice,
},
{
.name = "vnc",
.args_type = "",
.params = "",
.help = "show the vnc server status",
.mhandler.cmd = hmp_info_vnc,
},
#if defined(CONFIG_SPICE)
{
.name = "spice",
.args_type = "",
.params = "",
.help = "show the spice server status",
.mhandler.cmd = hmp_info_spice,
},
#endif
{
.name = "name",
.args_type = "",
.params = "",
.help = "show the current VM name",
.mhandler.cmd = hmp_info_name,
},
{
.name = "uuid",
.args_type = "",
.params = "",
.help = "show the current VM UUID",
.mhandler.cmd = hmp_info_uuid,
},
{
.name = "cpustats",
.args_type = "",
.params = "",
.help = "show CPU statistics",
.mhandler.cmd = hmp_info_cpustats,
},
#if defined(CONFIG_SLIRP)
{
.name = "usernet",
.args_type = "",
.params = "",
.help = "show user network stack connection states",
.mhandler.cmd = hmp_info_usernet,
},
#endif
{
.name = "migrate",
.args_type = "",
.params = "",
.help = "show migration status",
.mhandler.cmd = hmp_info_migrate,
},
{
.name = "migrate_capabilities",
.args_type = "",
.params = "",
.help = "show current migration capabilities",
.mhandler.cmd = hmp_info_migrate_capabilities,
},
{
.name = "migrate_parameters",
.args_type = "",
.params = "",
.help = "show current migration parameters",
.mhandler.cmd = hmp_info_migrate_parameters,
},
{
.name = "migrate_cache_size",
.args_type = "",
.params = "",
.help = "show current migration xbzrle cache size",
.mhandler.cmd = hmp_info_migrate_cache_size,
},
{
.name = "balloon",
.args_type = "",
.params = "",
.help = "show balloon information",
.mhandler.cmd = hmp_info_balloon,
},
{
.name = "qtree",
.args_type = "",
.params = "",
.help = "show device tree",
.mhandler.cmd = hmp_info_qtree,
},
{
.name = "qdm",
.args_type = "",
.params = "",
.help = "show qdev device model list",
.mhandler.cmd = hmp_info_qdm,
},
{
.name = "qom-tree",
.args_type = "path:s?",
.params = "[path]",
.help = "show QOM composition tree",
.mhandler.cmd = hmp_info_qom_tree,
},
{
.name = "roms",
.args_type = "",
.params = "",
.help = "show roms",
.mhandler.cmd = hmp_info_roms,
},
{
.name = "trace-events",
.args_type = "",
.params = "",
.help = "show available trace-events & their state",
.mhandler.cmd = hmp_info_trace_events,
},
{
.name = "tpm",
.args_type = "",
.params = "",
.help = "show the TPM device",
.mhandler.cmd = hmp_info_tpm,
},
{
.name = "memdev",
.args_type = "",
.params = "",
.help = "show memory backends",
.mhandler.cmd = hmp_info_memdev,
},
{
.name = "memory-devices",
.args_type = "",
.params = "",
.help = "show memory devices",
.mhandler.cmd = hmp_info_memory_devices,
},
{
.name = "iothreads",
.args_type = "",
.params = "",
.help = "show iothreads",
.mhandler.cmd = hmp_info_iothreads,
},
{
.name = "rocker",
.args_type = "name:s",
.params = "name",
.help = "Show rocker switch",
.mhandler.cmd = hmp_rocker,
},
{
.name = "rocker-ports",
.args_type = "name:s",
.params = "name",
.help = "Show rocker ports",
.mhandler.cmd = hmp_rocker_ports,
},
{
.name = "rocker-of-dpa-flows",
.args_type = "name:s,tbl_id:i?",
.params = "name [tbl_id]",
.help = "Show rocker OF-DPA flow tables",
.mhandler.cmd = hmp_rocker_of_dpa_flows,
},
{
.name = "rocker-of-dpa-groups",
.args_type = "name:s,type:i?",
.params = "name [type]",
.help = "Show rocker OF-DPA groups",
.mhandler.cmd = hmp_rocker_of_dpa_groups,
},
#if defined(TARGET_S390X)
{
.name = "skeys",
.args_type = "addr:l",
.params = "address",
.help = "Display the value of a storage key",
.mhandler.cmd = hmp_info_skeys,
},
#endif
{
.name = NULL,
},
#include "hmp-commands-info.h"
{ NULL, NULL, },
};
/* mon_cmds and info_cmds would be sorted at runtime */