Messages in this thread | | | Date | Mon, 25 Oct 1999 21:29:45 -0400 | From | "Theodore Y. Ts'o" <> | Subject | Re: serial.c (half duplex support) |
| |
From: "David Schwartz" <davids@webmaster.com> Date: Mon, 25 Oct 1999 15:46:39 -0700
There is an end of packet character. It consists of 27 idle bit times.
Ha, ha. Very funny.
The problem with detecting the idle time is that at 9600 bps, an idle bit is just a little bit over a 1ms; and at high baud rates, the bit time becomes an even smaller fraction of a clock tick.
This means that in order to measure the inter-character arrival time, you need to use a high-resolution timing source; and while we have one on the i386 (the timestamp instruction, on modern chips), it's not portable --- and remember, the serial driver has to work on architectures other than the i386: the alpha, PA-RISC, etc. (Sure, on some of the other architectures the clock tick is 1/1024 instead of 1/100, but that still isn't fast enough for baud rates higher than 9600 bps).
If the protocol had used an explicit ASCII character (with some kind of obvious escape mechanism) it would mean that the OS wouldn't have to do timing measurements at the interrupt receiver. It's easy enough to do handle the timing in hardware with a one-shot, but it's much more of a mess to do that in software.
- Ted
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |