From: Paul Fulghum <paulkf@microgate.com>
To: Antonino Ingargiola <tritemio@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
Oliver Neukum <oliver@neukum.org>,
linux-usb-users@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [SOLVED] Serial buffer corruption [was Re: FTDI usb-serial possible bug]
Date: Sun, 06 May 2007 08:35:59 -0600 [thread overview]
Message-ID: <463DE7CF.5010400@microgate.com> (raw)
In-Reply-To: <5486cca80705060029p433c6acar22faaeced2d7da37@mail.gmail.com>
Antonino Ingargiola wrote:
> For my use case would be more sensible to accept the new data and
> discard the older one in the tty buffer: the tty buffer would be a
> moving window of the most recent incoming data. This because if
> someone does not read the incoming data maybe he's not interested in
> it. When he finally reads the data (assuming there was buffer
> underrun) he's likely interested to the more recent chunk of incoming
> data and not to an "head" of the data firstly received. Since I
> acquire measurement data from serial this make perfect sense for me.
> But does this make sense in general too?
There is no one policy here that will make everyone happy.
Some will want all the data before some was lost,
others the data after some was lost.
The real goal is to minimize any data loss.
> However, whatever policy the buffer uses, the fundamental point it's that
> when I flush the input buffer I should be sure that each byte read
> after the flush is *new* (current) data and not old one. This because
> when the input stream can be stopped I can check that there are 0 byte
> in the buffer, but when the stream can't be stopped I must use a
> flush-and-sleep (multiple times) heuristic before I can read a single
> *reliable* byte.
The flush minimizes stale data the application must process.
As Alan said in his response there are other sources of
stale data beyond the kernel's control. But we absolutely should
be flushing all buffers we control.
In the end, if more reliability is needed the application must
implement its own discipline of framing (defining block boundaries) and
checking (CRC) on the raw data stream.
--
Paul
next prev parent reply other threads:[~2007-05-06 13:37 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-04 8:38 [SOLVED] Serial buffer corruption [was Re: FTDI usb-serial possible bug] Antonino Ingargiola
2007-05-04 8:49 ` Oliver Neukum
[not found] ` <5486cca80705040229g53933671m658bd028cadca155@mail.gmail.com>
2007-05-04 9:33 ` Antonino Ingargiola
2007-05-04 13:41 ` Oliver Neukum
2007-05-04 14:45 ` Paul Fulghum
2007-05-04 14:56 ` Paul Fulghum
2007-05-04 14:49 ` Paul Fulghum
2007-05-04 16:04 ` Antonino Ingargiola
2007-05-04 16:56 ` Antonino Ingargiola
2007-05-04 18:02 ` Paul Fulghum
2007-05-04 17:13 ` Antonino Ingargiola
2007-05-04 17:20 ` Paul Fulghum
2007-05-04 17:25 ` Antonino Ingargiola
2007-05-04 17:41 ` Paul Fulghum
2007-05-04 18:46 ` Antonino Ingargiola
2007-05-04 19:06 ` Antonino Ingargiola
2007-05-04 19:49 ` Paul Fulghum
2007-05-04 21:21 ` Antonino Ingargiola
2007-05-04 10:57 ` Paul Fulghum
2007-05-05 9:53 ` Antonino Ingargiola
2007-05-05 9:56 ` Antonino Ingargiola
2007-05-05 10:19 ` Antonino Ingargiola
2007-05-04 23:30 ` Paul Fulghum
2007-05-05 8:26 ` Paul Fulghum
2007-05-05 15:11 ` Antonino Ingargiola
2007-05-05 16:43 ` Paul Fulghum
2007-05-05 16:08 ` Paul Fulghum
2007-05-05 16:15 ` Paul Fulghum
2007-05-05 16:26 ` Antonino Ingargiola
2007-05-05 16:58 ` Antonino Ingargiola
2007-05-05 17:04 ` Paul Fulghum
2007-05-05 18:08 ` Antonino Ingargiola
2007-05-05 18:35 ` Oliver Neukum
2007-05-06 7:06 ` Antonino Ingargiola
2007-05-09 9:53 ` Antonino Ingargiola
2007-05-09 10:42 ` Gene Heskett
2007-05-09 11:02 ` Gene Heskett
2007-05-09 12:00 ` Gene Heskett
2007-05-05 16:36 ` Alan Cox
2007-05-05 16:54 ` Oliver Neukum
2007-05-05 21:49 ` Alan Cox
2007-05-05 18:07 ` Oliver Neukum
2007-05-05 21:52 ` Alan Cox
2007-05-06 7:29 ` Antonino Ingargiola
2007-05-06 12:28 ` Alan Cox
2007-05-06 16:39 ` Antonino Ingargiola
2007-05-06 16:46 ` Alan Cox
2007-05-06 21:51 ` [Linux-usb-users] " Alan Stern
2007-05-07 8:07 ` Antonino Ingargiola
2007-05-06 14:35 ` Paul Fulghum [this message]
2007-05-07 9:11 ` Diego Zuccato
2007-05-07 16:34 ` Alan Stern
2007-05-07 16:51 ` Oliver Neukum
2007-05-07 18:25 ` Alan Stern
2007-05-07 17:58 ` Stephen Beaver
2007-05-06 14:49 ` Paul Fulghum
2007-05-05 16:46 ` Oliver Neukum
2007-05-05 16:56 ` Paul Fulghum
2007-05-05 17:09 ` Antonino Ingargiola
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=463DE7CF.5010400@microgate.com \
--to=paulkf@microgate.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-users@lists.sourceforge.net \
--cc=oliver@neukum.org \
--cc=tritemio@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).