Monitor patches
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJV6YMbAAoJEDhwtADrkYZTmqUP/0PioppNHxOM+ah+9SoNBq+K jf6JLfxUkazPamtI1V3BYEhFgOMs+frQ/VG9mJjWdHeARHYePJce7arrUYV71L2+ Z9hWBM9I71axRG449ox8qwk2NZRNwGPoF4gQeoOYUaiDsQIQVpX69lIiF2XkJ1+c v521rLmfprHcJW9Ggzpds45FLUv8t3tvNobuBZO2XAs2oXdesBgIIp2HjL8onFlu r1LLnZWxdROe9HM9HXvjWC5aWmgRK0kgAoaEWo9cQj5jMGBNYQDKH56eGx03IZkF 29+AZ0ACI3b1OwlK7DK/YAYR78LR9z+TA+qf42+SPWLapImmH8qwrTN0vZpTs6GP caFGwklGyD6sQHiO5fmkSdxrES/W1ndshf8PfulgHQ4Wjb1rIcgCxl1gcH+zyT1G uBHJ7tozpdYZ78T60wY8dj46AidPX9Ru7+Y3D8fTncGuHJa/LacPp2AehA0lEbCK DGG5XFOJKIHBy0AXFPIyJ6pNPzU93jXGFf6pI5c15nMoCkh2wiNPWRM3ZXTrgWWc l7GZdwTewcm45UZVaITec+IJca7EjQIBvfUxs8yCaeBe6aEJQKw/P9lgvZPzt8Tk ozyCkQQIlnRupDb18p+MRD1/U2SZSjrTrlY/qNm/uBCyStjWKsyYFYvlcPFWSlOs BqE2BpLiUR2XDIuqe6E4 =6HLt -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/armbru/tags/pull-monitor-2015-09-04' into staging Monitor patches # gpg: Signature made Fri 04 Sep 2015 12:40:11 BST using RSA key ID EB918653 # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" * remotes/armbru/tags/pull-monitor-2015-09-04: hmp: add info iothreads command qmp-shell: add documentation Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
b597aa037d
|
@ -1809,6 +1809,8 @@ show the TPM device
|
||||||
show the memory devices
|
show the memory devices
|
||||||
@item info skeys
|
@item info skeys
|
||||||
Display the value of a storage key (s390 only)
|
Display the value of a storage key (s390 only)
|
||||||
|
@item info iothreads
|
||||||
|
show iothreads
|
||||||
@end table
|
@end table
|
||||||
ETEXI
|
ETEXI
|
||||||
|
|
||||||
|
|
13
hmp.c
13
hmp.c
|
@ -1963,6 +1963,19 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict)
|
||||||
qapi_free_MemoryDeviceInfoList(info_list);
|
qapi_free_MemoryDeviceInfoList(info_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hmp_info_iothreads(Monitor *mon, const QDict *qdict)
|
||||||
|
{
|
||||||
|
IOThreadInfoList *info_list = qmp_query_iothreads(NULL);
|
||||||
|
IOThreadInfoList *info;
|
||||||
|
|
||||||
|
for (info = info_list; info; info = info->next) {
|
||||||
|
monitor_printf(mon, "%s: thread_id=%" PRId64 "\n",
|
||||||
|
info->value->id, info->value->thread_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
qapi_free_IOThreadInfoList(info_list);
|
||||||
|
}
|
||||||
|
|
||||||
void hmp_qom_list(Monitor *mon, const QDict *qdict)
|
void hmp_qom_list(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
const char *path = qdict_get_try_str(qdict, "path");
|
const char *path = qdict_get_try_str(qdict, "path");
|
||||||
|
|
1
hmp.h
1
hmp.h
|
@ -39,6 +39,7 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_info_pci(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_info_block_jobs(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_info_tpm(Monitor *mon, const QDict *qdict);
|
void hmp_info_tpm(Monitor *mon, const QDict *qdict);
|
||||||
|
void hmp_info_iothreads(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_quit(Monitor *mon, const QDict *qdict);
|
void hmp_quit(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_stop(Monitor *mon, const QDict *qdict);
|
void hmp_stop(Monitor *mon, const QDict *qdict);
|
||||||
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
void hmp_system_reset(Monitor *mon, const QDict *qdict);
|
||||||
|
|
|
@ -2853,6 +2853,13 @@ static mon_cmd_t info_cmds[] = {
|
||||||
.help = "show memory devices",
|
.help = "show memory devices",
|
||||||
.mhandler.cmd = hmp_info_memory_devices,
|
.mhandler.cmd = hmp_info_memory_devices,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = "iothreads",
|
||||||
|
.args_type = "",
|
||||||
|
.params = "",
|
||||||
|
.help = "show iothreads",
|
||||||
|
.mhandler.cmd = hmp_info_iothreads,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.name = "rocker",
|
.name = "rocker",
|
||||||
.args_type = "name:s",
|
.args_type = "name:s",
|
||||||
|
|
|
@ -29,6 +29,41 @@
|
||||||
# (QEMU) device_add driver=e1000 id=net1
|
# (QEMU) device_add driver=e1000 id=net1
|
||||||
# {u'return': {}}
|
# {u'return': {}}
|
||||||
# (QEMU)
|
# (QEMU)
|
||||||
|
#
|
||||||
|
# key=value pairs also support Python or JSON object literal subset notations,
|
||||||
|
# without spaces. Dictionaries/objects {} are supported as are arrays [].
|
||||||
|
#
|
||||||
|
# example-command arg-name1={'key':'value','obj'={'prop':"value"}}
|
||||||
|
#
|
||||||
|
# Both JSON and Python formatting should work, including both styles of
|
||||||
|
# string literal quotes. Both paradigms of literal values should work,
|
||||||
|
# including null/true/false for JSON and None/True/False for Python.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Transactions have the following multi-line format:
|
||||||
|
#
|
||||||
|
# transaction(
|
||||||
|
# action-name1 [ arg-name1=arg1 ] ... [arg-nameN=argN ]
|
||||||
|
# ...
|
||||||
|
# action-nameN [ arg-name1=arg1 ] ... [arg-nameN=argN ]
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
# One line transactions are also supported:
|
||||||
|
#
|
||||||
|
# transaction( action-name1 ... )
|
||||||
|
#
|
||||||
|
# For example:
|
||||||
|
#
|
||||||
|
# (QEMU) transaction(
|
||||||
|
# TRANS> block-dirty-bitmap-add node=drive0 name=bitmap1
|
||||||
|
# TRANS> block-dirty-bitmap-clear node=drive0 name=bitmap0
|
||||||
|
# TRANS> )
|
||||||
|
# {"return": {}}
|
||||||
|
# (QEMU)
|
||||||
|
#
|
||||||
|
# Use the -v and -p options to activate the verbose and pretty-print options,
|
||||||
|
# which will echo back the properly formatted JSON-compliant QMP that is being
|
||||||
|
# sent to QEMU, which is useful for debugging and documentation generation.
|
||||||
|
|
||||||
import qmp
|
import qmp
|
||||||
import json
|
import json
|
||||||
|
|
Loading…
Reference in New Issue