From: Owen Smith Date: Thu, 8 Nov 2018 10:18:11 +0000 (+0000) Subject: Add more logging to xencons_tty X-Git-Tag: 9.0.0-rc1~10 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=10ff2caef804029e8db769b8b33e793327fe1ee3;p=pvdrivers%2Fwin%2Fxencons.git Add more logging to xencons_tty Signed-off-by: Owen Smith Don't restrict logging to debug builds and use 4 '=' characters in arrows, to be consistent with other code. Signed-off-by: Paul Durrant --- diff --git a/src/tty/tty.c b/src/tty/tty.c index 7d97df5..6e340ab 100644 --- a/src/tty/tty.c +++ b/src/tty/tty.c @@ -34,6 +34,10 @@ #include #include +#define stringify_literal(_text) #_text +#define stringify(_text) stringify_literal(_text) +#define __MODULE__ stringify(PROJECT) + typedef struct _TTY_STREAM { HANDLE Read; HANDLE Write; @@ -54,6 +58,46 @@ typedef struct _TTY_CONTEXT { TTY_CONTEXT TtyContext; +static VOID +#pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024' +__Log( + IN const CHAR *Format, + IN ... + ) +{ + CHAR Buffer[MAXIMUM_BUFFER_SIZE]; + va_list Arguments; + size_t Length; + HRESULT Result; + + va_start(Arguments, Format); + Result = StringCchVPrintfA(Buffer, + MAXIMUM_BUFFER_SIZE, + Format, + Arguments); + va_end(Arguments); + + if (Result != S_OK && Result != STRSAFE_E_INSUFFICIENT_BUFFER) + return; + + Result = StringCchLengthA(Buffer, MAXIMUM_BUFFER_SIZE, &Length); + if (Result != S_OK) + return; + + Length = __min(MAXIMUM_BUFFER_SIZE - 1, Length + 2); + + __analysis_assume(Length < MAXIMUM_BUFFER_SIZE); + __analysis_assume(Length >= 2); + Buffer[Length] = '\0'; + Buffer[Length - 1] = '\n'; + Buffer[Length - 2] = '\r'; + + OutputDebugString(Buffer); +} + +#define Log(_Format, ...) \ + __Log(__MODULE__ "|" __FUNCTION__ ": " _Format, __VA_ARGS__) + static BOOL CreateChild( VOID @@ -314,6 +358,8 @@ TtyIn( UNREFERENCED_PARAMETER(Argument); + Log("====>"); + for (;;) { DWORD Read; CHAR Buffer[MAXIMUM_BUFFER_SIZE]; @@ -346,6 +392,8 @@ TtyIn( } } + Log("<===="); + return 0; } @@ -358,6 +406,8 @@ TtyOut( UNREFERENCED_PARAMETER(Argument); + Log("====>"); + for (;;) { DWORD Read; DWORD Written; @@ -384,6 +434,8 @@ TtyOut( break; } + Log("<===="); + return 0; } @@ -402,6 +454,8 @@ _tmain( UNREFERENCED_PARAMETER(argc); UNREFERENCED_PARAMETER(argv); + Log("====>"); + if (!WaitNamedPipe(PIPE_NAME, NMPWAIT_USE_DEFAULT_WAIT)) ExitProcess(1); @@ -510,4 +564,6 @@ _tmain( CloseHandle(Handle[Index]); CloseHandle(Context->ProcessInfo.hProcess); + + Log("<===="); } diff --git a/vs2017/xencons_tty/xencons_tty.vcxproj b/vs2017/xencons_tty/xencons_tty.vcxproj index 18ad81b..623595c 100644 --- a/vs2017/xencons_tty/xencons_tty.vcxproj +++ b/vs2017/xencons_tty/xencons_tty.vcxproj @@ -20,7 +20,7 @@ $(SolutionDir)..\include;%(AdditionalIncludeDirectories) - WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + PROJECT=$(ProjectName);WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) EnableAllWarnings 4127;4711;4548;4820;4668;4255;5032;5045;6001;6054;28196;%(DisableSpecificWarnings) true