From: gt7080a@prism.gatech.EDU (Nathan I. Laredo) Subject: Character loss is only less frequent now, not gone. Date: 25 Jul 1992 05:13:39 GMT
Just when I thought all the serial problems were gone with
the new irq routines, once I downloaded a large enough file
I found the errors were still there, only now less frequently.
Instead of happening every 30 seconds it's happening every
three minutes in my download, although sometimes it only took
one minute to get an error. This is using a 14.4k v32bis/v.42bis
link with a 19200 DTE rate (38400 was simply too error prone).
The system load was as follows:
12:59pm up 2 days, 17:44, 1 user, load average: 0.05, 0.05, 0.01
so it's not attributable to doing other things as it usually is.
I've included my rzlog for a 6807187 byte file at the end of this
file for reference. The transfer took a total of 1.1 hours, so
the transfer rate was not excessive at all, or outside acceptable
ranges for my particular UART on a 486DX-50 machine.
I believe that here a dos-style approach to serial i/o would be
a good idea. That being on each serial interrupt, find out which
port generated the interrupt and store the character in the appropriate
buffer and return. This would also have the side effect of implementing
IRQ sharing if the same handler was used for all ports only checking
to see which has the interrupt bit set. This could be accomplished
by a read of the byte at each portbase+3. Right now I just don't have
the time to implement this, but I would imagine that it'd serve to
both reduce code and also make routines a lot faster at the same time
making those people (I'm not included here) who want irq sharing of
serial ports happy. This would take me less than a day to implement,
but I thought I'd share the idea so more people might be able to work
on it so that I can neglect it like my studies... Right now I just don't
have the time.