On Wed, Feb 08, 2012 at 12:00:16PM +0100, Gerd Hoffmann wrote: > This patch adds the system_wakeup monitor command which will simply > wake up suspended guests. > We can report this one as power button wakeup.
> Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > hmp-commands.hx | 14 ++++++++++++++ > hmp.c | 5 +++++ > hmp.h | 1 + > qapi-schema.json | 11 +++++++++++ > qmp-commands.hx | 21 +++++++++++++++++++++ > qmp.c | 5 +++++ > 6 files changed, 57 insertions(+), 0 deletions(-) > > diff --git a/hmp-commands.hx b/hmp-commands.hx > index 573b823..64b3656 100644 > --- a/hmp-commands.hx > +++ b/hmp-commands.hx > @@ -352,6 +352,20 @@ Resume emulation. > ETEXI > > { > + .name = "system_wakeup", > + .args_type = "", > + .params = "", > + .help = "wakeup guest from suspend", > + .mhandler.cmd = hmp_system_wakeup, > + }, > + > +STEXI > +@item system_wakeup > +@findex system_wakeup > +Wakeup guest from suspend. > +ETEXI > + > + { > .name = "gdbserver", > .args_type = "device:s?", > .params = "[device]", > diff --git a/hmp.c b/hmp.c > index 8ff8c94..3a54455 100644 > --- a/hmp.c > +++ b/hmp.c > @@ -632,6 +632,11 @@ void hmp_cont(Monitor *mon, const QDict *qdict) > } > } > > +void hmp_system_wakeup(Monitor *mon, const QDict *qdict) > +{ > + qmp_system_wakeup(NULL); > +} > + > void hmp_inject_nmi(Monitor *mon, const QDict *qdict) > { > Error *errp = NULL; > diff --git a/hmp.h b/hmp.h > index 18eecbd..5409464 100644 > --- a/hmp.h > +++ b/hmp.h > @@ -41,6 +41,7 @@ void hmp_cpu(Monitor *mon, const QDict *qdict); > void hmp_memsave(Monitor *mon, const QDict *qdict); > void hmp_pmemsave(Monitor *mon, const QDict *qdict); > void hmp_cont(Monitor *mon, const QDict *qdict); > +void hmp_system_wakeup(Monitor *mon, const QDict *qdict); > void hmp_inject_nmi(Monitor *mon, const QDict *qdict); > void hmp_set_link(Monitor *mon, const QDict *qdict); > void hmp_block_passwd(Monitor *mon, const QDict *qdict); > diff --git a/qapi-schema.json b/qapi-schema.json > index d02ee86..226c1da 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -999,6 +999,17 @@ > { 'command': 'cont' } > > ## > +# @system_wakeup: > +# > +# Wakeup guest from suspend > +# > +# Since: 1.1 > +# > +# Returns: nothing. > +## > +{ 'command': 'system_wakeup' } > + > +## > # @inject-nmi: > # > # Injects an Non-Maskable Interrupt into all guest's VCPUs. > diff --git a/qmp-commands.hx b/qmp-commands.hx > index b5e2ab8..f5081e2 100644 > --- a/qmp-commands.hx > +++ b/qmp-commands.hx > @@ -212,6 +212,27 @@ Example: > EQMP > > { > + .name = "system_wakeup", > + .args_type = "", > + .mhandler.cmd_new = qmp_marshal_input_system_wakeup, > + }, > + > +SQMP > +system_wakeup > +------------- > + > +Wakeup guest from suspend. > + > +Arguments: None. > + > +Example: > + > +-> { "execute": "system_wakeup" } > +<- { "return": {} } > + > +EQMP > + > + { > .name = "system_reset", > .args_type = "", > .mhandler.cmd_new = qmp_marshal_input_system_reset, > diff --git a/qmp.c b/qmp.c > index 45052cc..9ff5ec3 100644 > --- a/qmp.c > +++ b/qmp.c > @@ -164,6 +164,11 @@ void qmp_cont(Error **errp) > vm_start(); > } > > +void qmp_system_wakeup(Error **errp) > +{ > + qemu_system_wakeup_request(); > +} > + > ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp) > { > Object *obj; > -- > 1.7.1 > > -- Gleb.