hmp: dump-guest-memory: hardcode protocol argument to "file:"
Today, it's necessary to specify the protocol you want to use when dumping the guest memory, for example: (qemu) dump-guest-memory file:/tmp/guest-memory This has a few issues: 1. It's cumbersome to type 2. We loose file path autocompletion 3. Being able to specify fd:X in HMP makes little sense for humans Because of these reasons, hardcode the 'protocol' argument to 'file:' in HMP. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
2f61652d66
commit
753637695b
@ -914,12 +914,11 @@ ETEXI
|
|||||||
#if defined(CONFIG_HAVE_CORE_DUMP)
|
#if defined(CONFIG_HAVE_CORE_DUMP)
|
||||||
{
|
{
|
||||||
.name = "dump-guest-memory",
|
.name = "dump-guest-memory",
|
||||||
.args_type = "paging:-p,protocol:s,begin:i?,length:i?",
|
.args_type = "paging:-p,filename:F,begin:i?,length:i?",
|
||||||
.params = "[-p] protocol [begin] [length]",
|
.params = "[-p] filename [begin] [length]",
|
||||||
.help = "dump guest memory to file"
|
.help = "dump guest memory to file"
|
||||||
"\n\t\t\t begin(optional): the starting physical address"
|
"\n\t\t\t begin(optional): the starting physical address"
|
||||||
"\n\t\t\t length(optional): the memory size, in bytes",
|
"\n\t\t\t length(optional): the memory size, in bytes",
|
||||||
.user_print = monitor_user_noop,
|
|
||||||
.mhandler.cmd = hmp_dump_guest_memory,
|
.mhandler.cmd = hmp_dump_guest_memory,
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -929,8 +928,7 @@ STEXI
|
|||||||
@findex dump-guest-memory
|
@findex dump-guest-memory
|
||||||
Dump guest memory to @var{protocol}. The file can be processed with crash or
|
Dump guest memory to @var{protocol}. The file can be processed with crash or
|
||||||
gdb.
|
gdb.
|
||||||
protocol: destination file(started with "file:") or destination file
|
filename: dump file name
|
||||||
descriptor (started with "fd:")
|
|
||||||
paging: do paging to get guest's memory mapping
|
paging: do paging to get guest's memory mapping
|
||||||
begin: the starting physical address. It's optional, and should be
|
begin: the starting physical address. It's optional, and should be
|
||||||
specified with length together.
|
specified with length together.
|
||||||
|
8
hmp.c
8
hmp.c
@ -1042,11 +1042,12 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict)
|
|||||||
{
|
{
|
||||||
Error *errp = NULL;
|
Error *errp = NULL;
|
||||||
int paging = qdict_get_try_bool(qdict, "paging", 0);
|
int paging = qdict_get_try_bool(qdict, "paging", 0);
|
||||||
const char *file = qdict_get_str(qdict, "protocol");
|
const char *file = qdict_get_str(qdict, "filename");
|
||||||
bool has_begin = qdict_haskey(qdict, "begin");
|
bool has_begin = qdict_haskey(qdict, "begin");
|
||||||
bool has_length = qdict_haskey(qdict, "length");
|
bool has_length = qdict_haskey(qdict, "length");
|
||||||
int64_t begin = 0;
|
int64_t begin = 0;
|
||||||
int64_t length = 0;
|
int64_t length = 0;
|
||||||
|
char *prot;
|
||||||
|
|
||||||
if (has_begin) {
|
if (has_begin) {
|
||||||
begin = qdict_get_int(qdict, "begin");
|
begin = qdict_get_int(qdict, "begin");
|
||||||
@ -1055,9 +1056,12 @@ void hmp_dump_guest_memory(Monitor *mon, const QDict *qdict)
|
|||||||
length = qdict_get_int(qdict, "length");
|
length = qdict_get_int(qdict, "length");
|
||||||
}
|
}
|
||||||
|
|
||||||
qmp_dump_guest_memory(paging, file, has_begin, begin, has_length, length,
|
prot = g_strconcat("file:", file, NULL);
|
||||||
|
|
||||||
|
qmp_dump_guest_memory(paging, prot, has_begin, begin, has_length, length,
|
||||||
&errp);
|
&errp);
|
||||||
hmp_handle_error(mon, &errp);
|
hmp_handle_error(mon, &errp);
|
||||||
|
g_free(prot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hmp_netdev_add(Monitor *mon, const QDict *qdict)
|
void hmp_netdev_add(Monitor *mon, const QDict *qdict)
|
||||||
|
Loading…
Reference in New Issue
Block a user