]> xenbits.xensource.com Git - pvdrivers/win/xencons.git/commitdiff
Add more logging to xencons_tty
authorOwen Smith <owen.smith@citrix.com>
Thu, 8 Nov 2018 10:18:11 +0000 (10:18 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 8 Nov 2018 10:22:42 +0000 (10:22 +0000)
Signed-off-by: Owen Smith <owen.smith@citrix.com>
Don't restrict logging to debug builds and use 4 '=' characters in arrows,
to be consistent with other code.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
src/tty/tty.c
vs2017/xencons_tty/xencons_tty.vcxproj

index 7d97df56f4937996b41ab155e2785df00ffa0d35..6e340ab631650636c74de99f714d12e9828b06e5 100644 (file)
 #include <strsafe.h>
 #include <userenv.h>
 
+#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("<====");
 }
index 18ad81be55b9735607d4e0aff7a260ba4fdc3126..623595cededab23017e64aad2075eb75996d8bbd 100644 (file)
@@ -20,7 +20,7 @@
   <ItemDefinitionGroup>
     <ClCompile>
       <AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>PROJECT=$(ProjectName);WIN32;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>EnableAllWarnings</WarningLevel>
       <DisableSpecificWarnings>4127;4711;4548;4820;4668;4255;5032;5045;6001;6054;28196;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <MultiProcessorCompilation>true</MultiProcessorCompilation>