[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] [PATCH 2/4] Use PutString to manage short WriteFile



> -----Original Message-----
> From: win-pv-devel [mailto:win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On
> Behalf Of owen.smith@xxxxxxxxxx
> Sent: 25 August 2017 11:51
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith <owen.smith@xxxxxxxxxx>
> Subject: [win-pv-devel] [PATCH 2/4] Use PutString to manage short WriteFile
> 
> From: Owen Smith <owen.smith@xxxxxxxxxx>
> 
> PutString will now deal in UCHARs, so the calculated lengths need to be
> translated into byte counts.
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  msbuild.bat           |  0
>  src/monitor/monitor.c | 69 +++++++++++++++++++++++-----------------------
> -----
>  2 files changed, 31 insertions(+), 38 deletions(-)
>  mode change 100644 => 100755 msbuild.bat
> 
> diff --git a/msbuild.bat b/msbuild.bat
> old mode 100644
> new mode 100755
> diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
> index 112ce65..6068f5c 100644
> --- a/src/monitor/monitor.c
> +++ b/src/monitor/monitor.c
> @@ -399,6 +399,32 @@ __RemoveEntryList(
>      ListEntry->Blink = ListEntry;
>  }
> 
> +static VOID
> +PutString(
> +    IN  HANDLE      Handle,
> +    IN  PUCHAR      Buffer,
> +    IN  DWORD       Length
> +    )
> +{
> +    DWORD           Offset;
> +
> +    Offset = 0;
> +    while (Offset < Length) {
> +        DWORD   Written;
> +        BOOL    Success;
> +
> +        Success = WriteFile(Handle,
> +                            &Buffer[Offset],
> +                            Length - Offset,
> +                            &Written,
> +                            NULL);
> +        if (!Success)
> +            break;
> +
> +        Offset += Written;
> +    }
> +}
> +
>  DWORD WINAPI
>  PipeThread(
>      IN  LPVOID          Argument
> @@ -432,8 +458,6 @@ PipeThread(
>      LeaveCriticalSection(&Context->CriticalSection);
> 
>      for (;;) {
> -        DWORD           Written;
> -
>          (VOID) ReadFile(Pipe->Pipe,
>                          Buffer,
>                          sizeof(Buffer),
> @@ -455,11 +479,9 @@ PipeThread(
> 
>          ResetEvent(Overlapped.hEvent);
> 
> -        WriteFile(Context->Device,
> +        PutString(Context->Device,
>                    Buffer,
> -                  Length,
> -                  &Written,
> -                  NULL);
> +                  Length);
>      }
> 
>      EnterCriticalSection(&Context->CriticalSection);
> @@ -752,15 +774,12 @@ DeviceThread(
>               ListEntry != &Context->ListHead;
>               ListEntry = ListEntry->Flink) {
>              PMONITOR_PIPE   Instance;
> -            DWORD           Written;
> 
>              Instance = CONTAINING_RECORD(ListEntry, MONITOR_PIPE,
> ListEntry);
> 
> -            WriteFile(Instance->Pipe,
> +            PutString(Instance->Pipe,
>                        Buffer,
> -                      Length,
> -                      &Written,
> -                      NULL);
> +                      Length);
>          }
>          LeaveCriticalSection(&Context->CriticalSection);
>      }
> @@ -791,34 +810,8 @@ fail1:
>      return 1;
>  }
> 
> -static VOID
> -PutString(
> -    IN  HANDLE      Handle,
> -    IN  PTCHAR      Buffer,
> -    IN  DWORD       Length
> -    )
> -{
> -    DWORD           Offset;
> -
> -    Offset = 0;
> -    while (Offset < Length) {
> -        DWORD   Written;
> -        BOOL    Success;
> -
> -        Success = WriteFile(Handle,
> -                            &Buffer[Offset],
> -                            Length - Offset,
> -                            &Written,
> -                            NULL);
> -        if (!Success)
> -            break;
> -
> -        Offset += Written;
> -    }
> -}
> -
>  #define ECHO(_Handle, _Buffer) \
> -    PutString((_Handle), TEXT(_Buffer), (DWORD)_tcslen(_Buffer))
> +    PutString((_Handle), (PUCHAR)TEXT(_Buffer),
> (DWORD)_tcslen((_Buffer)) * sizeof(TCHAR))
> 
>  static VOID
>  MonitorAdd(
> --
> 2.8.3
> 
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.