|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH] Prevent events getting lost, and remove xenstore polling
Auto-resetting events, on occaision, are getting lost. This
can be avoided by ensuring events are manually rest.
As events are no longer lost, there is no longer a need to
poll shudown or suspend every minute
Also fix invocation of CreateEvent methods
Signed-Off-By: Ben.Chalmers@xxxxxxxxxx
---
src/xenagent/service.cpp | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/xenagent/service.cpp b/src/xenagent/service.cpp
index d917821..0b44186 100644
--- a/src/xenagent/service.cpp
+++ b/src/xenagent/service.cpp
@@ -63,9 +63,9 @@ CXenIfaceCreator::CXenIfaceCreator(CXenAgent& agent) :
m_ctxt_shutdown(NULL), m_ctxt_suspend(NULL),
m_ctxt_slate_mode(NULL), m_agent(agent)
{
- m_evt_shutdown = CreateEvent(FALSE, NULL, NULL, FALSE);
- m_evt_suspend = CreateEvent(FALSE, NULL, NULL, FALSE);
- m_evt_slate_mode = CreateEvent(FALSE, NULL, NULL, FALSE);
+ m_evt_shutdown = CreateEvent(NULL, TRUE, FALSE, NULL);
+ m_evt_suspend = CreateEvent(NULL, TRUE, FALSE, NULL);
+ m_evt_slate_mode = CreateEvent(NULL, TRUE, FALSE, NULL);
m_count = 0;
InitializeCriticalSection(&m_crit);
@@ -711,22 +711,26 @@ bool CXenAgent::ServiceMainLoop()
m_xeniface.m_evt_shutdown,
m_xeniface.m_evt_suspend,
m_xeniface.m_evt_slate_mode };
- DWORD wait = WaitForMultipleObjectsEx(4, events, FALSE, 60000, TRUE);
+ DWORD wait = WaitForMultipleObjectsEx(4, events, FALSE, INFINITE, TRUE);
switch (wait) {
case WAIT_OBJECT_0:
+ ResetEvent(m_svc_stop);
return false; // exit loop
case WAIT_OBJECT_0+1:
+ ResetEvent(m_xeniface.m_evt_shutdown);
return !m_xeniface.CheckShutdown();
case WAIT_OBJECT_0+2:
+ ResetEvent(m_xeniface.m_evt_suspend);
m_xeniface.CheckSuspend();
return true; // continue loop
case WAIT_OBJECT_0+3: {
std::string mode;
+ ResetEvent(m_xeniface.m_evt_slate_mode);
if (m_xeniface.CheckSlateMode(&mode))
m_conv.SetSlateMode(mode);
--
2.10.1.windows.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |