Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com X-Authentication-Warning: myth9.Stanford.EDU: cobbler owned process doing -bs Date: Fri, 15 Dec 2000 18:53:31 -0800 (PST) From: Dan Morris Reply-To: dmorris AT tiqit DOT com To: cygwin-developers AT cygwin DOT com Subject: Re: Serial blocking read In-Reply-To: <20001215210940.A12596@redhat.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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. > > > >-Dan > > > >Dan Morris > >http://techhouse.brown.edu/dmorris > > > >Tiqit Computers > >http://www.tiqit.com > > > > -- > cgf AT cygnus DOT com Red Hat, Inc. > http://sources.redhat.com/ http://www.redhat.com/ > Dan Morris http://techhouse.brown.edu/dmorris Tiqit Computers http://www.tiqit.com