|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer for logging
Allows log messages longer than 255 characters
Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
src/liteagent/LiteAgent.cpp | 21 +++++++++++++++++++--
src/liteagent/XenIfaceItf.cpp | 12 +++++++++++-
src/liteagent/XenIfaceItf.h | 3 +++
3 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/src/liteagent/LiteAgent.cpp b/src/liteagent/LiteAgent.cpp
index 568a2cb..8599d52 100644
--- a/src/liteagent/LiteAgent.cpp
+++ b/src/liteagent/LiteAgent.cpp
@@ -79,14 +79,31 @@ static CLiteAgent s_service;
/*static*/ void CLiteAgent::Log(const char* fmt, ...)
{
- char message[256];
+ char* message;
+ size_t length;
va_list args;
va_start(args, fmt);
- vsnprintf_s(message, sizeof(message), sizeof(message)/sizeof(message[0]) -
1, fmt, args);
+ length = _vscprintf(fmt, args);
va_end(args);
+ message = new char[length + 1];
+ if (message == NULL)
+ return;
+
+ va_start(args, fmt);
+ vsnprintf_s(message, (length + 1) * sizeof(char), length, fmt, args);
+ va_end(args);
+
+ message[length] = 0;
OutputDebugString(message);
+
+ CCritSec crit(&s_service.m_crit);
+ if (s_service.m_dev) {
+ s_service.m_dev->Log(message);
+ }
+
+ delete [] message;
}
/*static*/ int CLiteAgent::ServiceInstall()
diff --git a/src/liteagent/XenIfaceItf.cpp b/src/liteagent/XenIfaceItf.cpp
index 7e5fadf..2027766 100644
--- a/src/liteagent/XenIfaceItf.cpp
+++ b/src/liteagent/XenIfaceItf.cpp
@@ -142,4 +142,14 @@ bool CXenIfaceItf::SharedInfoGetTime(FILETIME* time)
return Ioctl(IOCTL_XENIFACE_SHAREDINFO_GET_TIME,
NULL, 0,
time, sizeof(FILETIME));
-}
\ No newline at end of file
+}
+
+// misc
+bool CXenIfaceItf::Log(const std::string& msg)
+{
+ return Ioctl(IOCTL_XENIFACE_LOG,
+ (void*)msg.c_str(), (DWORD)msg.length() + 1,
+ NULL, 0);
+}
+
+
diff --git a/src/liteagent/XenIfaceItf.h b/src/liteagent/XenIfaceItf.h
index e36f189..0ef42a8 100644
--- a/src/liteagent/XenIfaceItf.h
+++ b/src/liteagent/XenIfaceItf.h
@@ -55,6 +55,9 @@ public: // suspend interface
public: // sharedinfo interface
bool SharedInfoGetTime(FILETIME* time);
+
+public: // misc
+ bool Log(const std::string& msg);
};
#endif
--
1.9.4.msysgit.1
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |