From: Chuck Messenger <chuckm@rochester.rr.com>
To: linux-serial@vger.kernel.org
Subject: low_latency flag
Date: Fri, 21 Nov 2003 16:59:50 -0500 [thread overview]
Message-ID: <bpm18m$73f$1@sea.gmane.org> (raw)
In-Reply-To: <3FBD7CD7.1060902@rochester.rr.com>
In my continuing efforts to connect to a real-time device, I came across
another problem -- latency. I found that there was significant delay
(multiple ms) between the time a byte arrives at the port, and the time
that read() supplies it to my program.
Luckily, I happened to notice a recent message on this list with the
word "low_latency". This led me to discover the low_latency flag, which
you can set with "setserial /dev/ttyS0 low_latency". This sets a
special mode on the port, which defeats some kernel-level buffering. I
don't (yet) know how to set this mode programmatically -- I just call
system("...") from my code (yech!).
I'm posting this in the hopes that someone trying to do something
similar finds it useful some day...
(P.S. Can someone tell me how to set the low_latency flag programmatically?)
- Chuck
Chuck Messenger wrote:
> OK, thanks for the thorough explanation, Ed -- it all makes sense now...
>
> As far as the documentation goes -- I'm sending this to the
> maintainers/writers of the Linux Serial Howto, and the Linux Serial
> Programming Howto. I had trouble sending to both before, so I'm
> cross-posting here in the hopes they might see it...
>
> 1) In my experience, open() does not hang if DTD is not asserted, even
> without O_NONBLOCK. Instead, open() returns, but read() hangs instead.
> If DTD is not asserted, and you open with O_NONBLOCK, then open()
> returns (as per the documentation), but all read()'s fail right away
> (not in the documentation).
>
> 2) It would be very helpful to point out in the documentation that you
> _must_ assert DCD -- in hardware -- or it will be impossible for you to
> operate the serial port, no matter what software flags you use. It
> would be nice to point out the trick of attaching DTR to DCD, too.
>
> For reference, I'm running Mandrake 9.1, with kernel 2.4.21-0.13mdk.
>
> - Chuck
>
> Ed Vance wrote:
>
>> Hi Chuck,
>>
>> Yep, I'm surprised too about open. Also, in theory, the read should
>> not have
>> hanged, because you had previously set CLOCAL. Just a bug or two,
>> here. Oh
>> well. For hysterical .. oops .. historical reasons, the default termio(s)
>> settings have CLOCAL off. The idea was that if you were using a modem,
>> the
>> port would hang in the open until the phone line and modem connection was
>> made, as evidenced by detection of carrier tone from the remote modem.
>> (DCD
>> = carrier detect). This standard behavior has frustrated people who were
>> just trying to connect local devices for many years. Some systems have a
>> "soft carrier" option outside of termios that causes a port to act as
>> if DCD
>> is always asserted.
>> You can accomplish the same thing by looping back DTR (pin 4) to DCD (pin
>> 1). Open will assert DTR, and that will drive DCD high for you. That's
>> what
>> most folks do.
>>
>> Cheers,
>> Ed
>
> ...
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-serial" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2003-11-21 21:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-20 21:38 DTD required (was Re: Trouble reading from my serial device ( a microcontroller)) Ed Vance
2003-11-21 2:47 ` Serial Howto suggestions (was Re: Trouble reading from my serial device...) Chuck Messenger
2003-11-21 5:29 ` Gary Frerking
2003-11-21 21:59 ` Chuck Messenger [this message]
2003-11-21 22:43 ` low_latency flag Jan-Benedict Glaw
2003-11-21 23:37 ` Chuck Messenger
2003-11-22 5:32 ` Serial Howto suggestions (was Re: Trouble reading from my serial device...) David Lawyer
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='bpm18m$73f$1@sea.gmane.org' \
--to=chuckm@rochester.rr.com \
--cc=linux-serial@vger.kernel.org \
/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