On Thu, Nov 26, 2009 at 06:27:31PM +0000, Daniel P. Berrange wrote: > * src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add callbacks > for reset, shutdown, poweroff and stop events. Add convenience > methods for emiting those events > --- > src/qemu/qemu_monitor.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++ > src/qemu/qemu_monitor.h | 13 ++++++++++ > 2 files changed, 73 insertions(+), 0 deletions(-) > > diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c > index 11025a7..b0ed182 100644 > --- a/src/qemu/qemu_monitor.c > +++ b/src/qemu/qemu_monitor.c > @@ -709,6 +709,66 @@ int qemuMonitorGetDiskSecret(qemuMonitorPtr mon, > } > > > +int qemuMonitorEmitShutdown(qemuMonitorPtr mon) > +{ > + int ret = -1; > + VIR_DEBUG("mon=%p", mon); > + > + qemuMonitorRef(mon); > + qemuMonitorUnlock(mon); > + if (mon->cb && mon->cb->domainShutdown) > + ret = mon->cb->domainShutdown(mon, mon->vm); > + qemuMonitorLock(mon); > + qemuMonitorUnref(mon); > + return ret; > +} > + > + > +int qemuMonitorEmitReset(qemuMonitorPtr mon) > +{ > + int ret = -1; > + VIR_DEBUG("mon=%p", mon); > + > + qemuMonitorRef(mon); > + qemuMonitorUnlock(mon); > + if (mon->cb && mon->cb->domainReset) > + ret = mon->cb->domainReset(mon, mon->vm); > + qemuMonitorLock(mon); > + qemuMonitorUnref(mon); > + return ret; > +} > + > + > +int qemuMonitorEmitPowerdown(qemuMonitorPtr mon) > +{ > + int ret = -1; > + VIR_DEBUG("mon=%p", mon); > + > + qemuMonitorRef(mon); > + qemuMonitorUnlock(mon); > + if (mon->cb && mon->cb->domainPowerdown) > + ret = mon->cb->domainPowerdown(mon, mon->vm); > + qemuMonitorLock(mon); > + qemuMonitorUnref(mon); > + return ret; > +} > + > + > +int qemuMonitorEmitStop(qemuMonitorPtr mon) > +{ > + int ret = -1; > + VIR_DEBUG("mon=%p", mon); > + > + qemuMonitorRef(mon); > + qemuMonitorUnlock(mon); > + if (mon->cb && mon->cb->domainStop) > + ret = mon->cb->domainStop(mon, mon->vm); > + qemuMonitorLock(mon); > + qemuMonitorUnref(mon); > + return ret; > +} > + > + > int > qemuMonitorStartCPUs(qemuMonitorPtr mon, > virConnectPtr conn) > diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h > index 7aa6ee5..8b1e3a3 100644 > --- a/src/qemu/qemu_monitor.h > +++ b/src/qemu/qemu_monitor.h > @@ -76,6 +76,15 @@ struct _qemuMonitorCallbacks { > const char *path, > char **secret, > size_t *secretLen); > + > + int (*domainShutdown)(qemuMonitorPtr mon, > + virDomainObjPtr vm); > + int (*domainReset)(qemuMonitorPtr mon, > + virDomainObjPtr vm); > + int (*domainPowerdown)(qemuMonitorPtr mon, > + virDomainObjPtr vm); > + int (*domainStop)(qemuMonitorPtr mon, > + virDomainObjPtr vm); > }; > > > @@ -106,6 +115,10 @@ int qemuMonitorGetDiskSecret(qemuMonitorPtr mon, > char **secret, > size_t *secretLen); > > +int qemuMonitorEmitShutdown(qemuMonitorPtr mon); > +int qemuMonitorEmitReset(qemuMonitorPtr mon); > +int qemuMonitorEmitPowerdown(qemuMonitorPtr mon); > +int qemuMonitorEmitStop(qemuMonitorPtr mon); > > int qemuMonitorStartCPUs(qemuMonitorPtr mon, > virConnectPtr conn); ACK Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list