[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer for logging
> -----Original Message----- > From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On > Behalf Of Owen Smith > Sent: 24 May 2016 15:21 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Cc: Owen Smith > Subject: [win-pv-devel] [PATCH 19/20] Dynamically allocate the buffer for > logging > > Allows log messages longer than 255 characters > The patch also seems to have expanded the scope of the log function, but there's no comment to justify this. Paul > 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 _______________________________________________ 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 |