summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorOsier Yang <jyang@redhat.com>2012-03-23 22:50:36 +0800
committerOsier Yang <jyang@redhat.com>2012-03-23 23:12:18 +0800
commit487c0633819b52590baa0084bf14769a3beebfaf (patch)
tree8f2bbfaceba6307def359c1932671d6595fca4ff /examples
parent57ddcc235ac7f80d87f46c8b8cc5ce17e86b8b9b (diff)
downloadlibvirt-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.c20
-rw-r--r--examples/domain-events/events-python/event-test.py4
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)