[ros-dev] Re: [ros-svn] [navaraf] 17154: Fix mutex unlocking in NpfsWaiterThread and add ASSERT.

Hartmut Birr hartmut.birr at gmx.de
Mon Aug 8 01:53:41 CEST 2005


Filip Navara wrote:

>>
> Does the attached patch make any difference (it just reverts most of
> the changes to rw.c)?
>
> - Filip
>
>------------------------------------------------------------------------
>
>Index: rw.c
>===================================================================
>--- rw.c	(revision 17183)
>+++ rw.c	(revision 17155)
>@@ -398,25 +398,23 @@
>      {
>         if (Fcb->ReadDataAvailable == 0)
>         {
>+	   if (Fcb->PipeState == FILE_PIPE_CONNECTED_STATE)
>+	   {
>+	      ASSERT(Fcb->OtherSide != NULL);
>+	      KeSetEvent(&Fcb->OtherSide->WriteEvent, IO_NO_INCREMENT, FALSE);
>+	   }
>+	   if (Information > 0 &&
>+	       (Fcb->Pipe->ReadMode != FILE_PIPE_BYTE_STREAM_MODE ||
>+	        Fcb->PipeState != FILE_PIPE_CONNECTED_STATE))
>+	   {
>+	      break;
>+	   }
>       	   if (Fcb->PipeState != FILE_PIPE_CONNECTED_STATE)
> 	   {
> 	      DPRINT("PipeState: %x\n", Fcb->PipeState);
>-	      if (Fcb->PipeState == FILE_PIPE_LISTENING_STATE)
>-	         Status = STATUS_PIPE_LISTENING;
>-	      else
>-	         Status = STATUS_PIPE_DISCONNECTED;
>+	      Status = STATUS_PIPE_BROKEN;
> 	      break;
>            }
>-
>-	   ASSERT(Fcb->OtherSide != NULL);
>-	   KeSetEvent(&Fcb->OtherSide->WriteEvent, IO_NO_INCREMENT, FALSE);
>-
>-	   if (Information > 0 &&
>-	       Fcb->Pipe->ReadMode != FILE_PIPE_BYTE_STREAM_MODE)
>-	   {
>-              break;
>-	   }
>-
> 	   ExReleaseFastMutex(&Fcb->DataListLock);
> 	   if (IoIsOperationSynchronous(Irp))
> 	   {
>  
>
The patch does fix my problem. Compiling Ros on Ros works again.

- Hartmut


More information about the Ros-dev mailing list