delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2000/12/15/21:58:59

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-developers-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-developers-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com
Date: Fri, 15 Dec 2000 21:58:42 -0500
From: Christopher Faylor <cgf AT redhat DOT com>
To: cygwin-developers AT cygwin DOT com
Subject: Re: Serial blocking read
Message-ID: <20001215215842.A11915@redhat.com>
Reply-To: cygwin-developers AT cygwin DOT com
Mail-Followup-To: cygwin-developers AT cygwin DOT com
References: <20001215210940 DOT A12596 AT redhat DOT com> <Pine DOT GSO DOT 4 DOT 21 DOT 0012151851070 DOT 28122-100000 AT myth9 DOT Stanford DOT EDU>
Mime-Version: 1.0
User-Agent: Mutt/1.3.11i
In-Reply-To: <Pine.GSO.4.21.0012151851070.28122-100000@myth9.Stanford.EDU>; from cobbler@stanford.edu on Fri, Dec 15, 2000 at 06:53:31PM -0800

Ok.  Can you provide a little bit of an explanation on why this
solves your problem.  It doesn't make any sense to me that it would
by reading the code.

cgf

On Fri, Dec 15, 2000 at 06:53:31PM -0800, Dan Morris wrote:
>My bad... I totally spaced on even giving a filename.  Here's a better diff :
>
>--- fhandler_serial.cc-orig     Fri Dec 15 18:45:26 2000
>+++ fhandler_serial.cc  Fri Dec 15 00:28:04 2000
>@@ -119,6 +119,13 @@ fhandler_serial::raw_read (void *ptr, si
>            }
>        }
>
>+      if (overlapped_armed) {
>+          if (!ClearCommError (get_handle (), &ev, &st))
>+           goto err;
>+         else if (st.cbInQue)
>+           inq = st.cbInQue;
>+      }
>+
>       overlapped_armed = 0;
>       ResetEvent (io_status.hEvent);
>       if (inq > ulen)
>
>-Dan
>
>On Fri, 15 Dec 2000, Christopher Faylor wrote:
>
>> I think this is coming from fhandler_serial.cc but I don't know for
>> sure.  Can you provide a unified diff?  A complete unified diff will
>> show the filename and give a little more context.
>> 
>> The contributing link on http://cygwin.com should give you some pointers on how
>> to do this and how to provide a patch.
>> 
>> cgf
>> 
>> On Fri, Dec 15, 2000 at 05:38:09PM -0800, Dan Morris wrote:
>> >Has anyone else had problems with serial port reads blocking even when
>> >O_NONBLOCK is passed to _read in the 1.1.6-1 DLL?
>> >
>> >I noticed that my reads were appropriately non-blocking most of the time, but
>> >blocked whenever "overlapped_armed" was set, because in this case raw_read
>> >never finds out how many bytes are in the serial port's buffer.  This patch
>> >seems to fix the problem for me :
>> >
>> >121a122,128
>> >>       if (overlapped_armed) {
>> >>           if (!ClearCommError (get_handle (), &ev, &st))
>> >> 	          goto err;
>> >>           else if (st.cbInQue)
>> >>             inq = st.cbInQue;
>> >>       }
>> >> 
>> >
>> >If anyone else has found a better solution to this problem, let me know...
>> >otherwise perhaps this patch will fix things.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019