diff options
author | Osier Yang <jyang@redhat.com> | 2012-03-23 22:50:36 +0800 |
---|---|---|
committer | Osier Yang <jyang@redhat.com> | 2012-03-23 23:12:18 +0800 |
commit | 487c0633819b52590baa0084bf14769a3beebfaf (patch) | |
tree | 8f2bbfaceba6307def359c1932671d6595fca4ff /examples | |
parent | 57ddcc235ac7f80d87f46c8b8cc5ce17e86b8b9b (diff) | |
download | libvirt-487c0633819b52590baa0084bf14769a3beebfaf.tar.gz |
Add support for the suspend event
This patch introduces a new event type for the QMP event
SUSPEND:
VIR_DOMAIN_EVENT_ID_PMSUSPEND
The event doesn't take any data, but considering there might
be reason for wakeup in future, the callback definition is:
typedef void
(*virConnectDomainEventSuspendCallback)(virConnectPtr conn,
virDomainPtr dom,
int reason,
void *opaque);
"reason" is unused currently, always passes "0".
Diffstat (limited to 'examples')
-rw-r--r-- | examples/domain-events/events-c/event-test.c | 20 | ||||
-rw-r--r-- | examples/domain-events/events-python/event-test.py | 4 |
2 files changed, 23 insertions, 1 deletions
diff --git a/examples/domain-events/events-c/event-test.c b/examples/domain-events/events-c/event-test.c index 78cfa3b19e..9ffabd63e3 100644 --- a/examples/domain-events/events-c/event-test.c +++ b/examples/domain-events/events-c/event-test.c @@ -340,6 +340,16 @@ static int myDomainEventPMWakeupCallback(virConnectPtr conn ATTRIBUTE_UNUSED, return 0; } +static int myDomainEventPMSuspendCallback(virConnectPtr conn ATTRIBUTE_UNUSED, + virDomainPtr dom, + int reason ATTRIBUTE_UNUSED, + void *opaque ATTRIBUTE_UNUSED) +{ + printf("%s EVENT: Domain %s(%d) system pmsuspend", + __func__, virDomainGetName(dom), virDomainGetID(dom)); + return 0; +} + static void myFreeFunc(void *opaque) { char *str = opaque; @@ -377,6 +387,7 @@ int main(int argc, char **argv) int callback9ret = -1; int callback10ret = -1; int callback11ret = -1; + int callback12ret = -1; struct sigaction action_stop; memset(&action_stop, 0, sizeof action_stop); @@ -457,6 +468,11 @@ int main(int argc, char **argv) VIR_DOMAIN_EVENT_ID_PMWAKEUP, VIR_DOMAIN_EVENT_CALLBACK(myDomainEventPMWakeupCallback), strdup("pmwakeup"), myFreeFunc); + callback12ret = virConnectDomainEventRegisterAny(dconn, + NULL, + VIR_DOMAIN_EVENT_ID_PMSUSPEND, + VIR_DOMAIN_EVENT_CALLBACK(myDomainEventPMSuspendCallback), + strdup("pmsuspend"), myFreeFunc); if ((callback1ret != -1) && (callback2ret != -1) && (callback3ret != -1) && @@ -466,7 +482,8 @@ int main(int argc, char **argv) (callback7ret != -1) && (callback9ret != -1) && (callback10ret != -1) && - (callback11ret != -1)) { + (callback11ret != -1) && + (callback12ret != -1)) { if (virConnectSetKeepAlive(dconn, 5, 3) < 0) { virErrorPtr err = virGetLastError(); fprintf(stderr, "Failed to start keepalive protocol: %s\n", @@ -493,6 +510,7 @@ int main(int argc, char **argv) virConnectDomainEventDeregisterAny(dconn, callback9ret); virConnectDomainEventDeregisterAny(dconn, callback10ret); virConnectDomainEventDeregisterAny(dconn, callback11ret); + virConnectDomainEventDeregisterAny(dconn, callback12ret); if (callback8ret != -1) virConnectDomainEventDeregisterAny(dconn, callback8ret); } diff --git a/examples/domain-events/events-python/event-test.py b/examples/domain-events/events-python/event-test.py index 6fa93a96ea..96dc2684fe 100644 --- a/examples/domain-events/events-python/event-test.py +++ b/examples/domain-events/events-python/event-test.py @@ -480,6 +480,9 @@ def myDomainEventTrayChangeCallback(conn, dom, devAlias, reason, opaque): def myDomainEventPMWakeupCallback(conn, dom, reason, opaque): print "myDomainEventPMWakeupCallback: Domain %s(%s) system pmwakeup" % ( dom.name(), dom.ID()) +def myDomainEventPMSuspendCallback(conn, dom, reason, opaque): + print "myDomainEventPMSuspendCallback: Domain %s(%s) system pmsuspend" % ( + dom.name(), dom.ID()) def usage(out=sys.stderr): print >>out, "usage: "+os.path.basename(sys.argv[0])+" [-hdl] [uri]" print >>out, " uri will default to qemu:///system" @@ -540,6 +543,7 @@ def main(): vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_DISK_CHANGE, myDomainEventDiskChangeCallback, None) vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_TRAY_CHANGE, myDomainEventTrayChangeCallback, None) vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_PMWAKEUP, myDomainEventPMWakeupCallback, None) + vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_PMSUSPEND, myDomainEventPMSuspendCallback, None) vc.setKeepAlive(5, 3) |