Re: Serial driver hangs

From: Paul Fulghum
Date: Thu Sep 30 2004 - 15:38:29 EST


On Thu, 2004-09-30 at 15:05, Paul Fulghum wrote:
> My statement of 'most drivers' is wrong.
> I should have said 'some drivers'
> including 2.4 serial.c and the 8250/serial of 2.6

Specifically it is the use of this code fragment
in the ISR of serial.c (2.4) and the various
drivers in driver/serial of 2.6:

if (unlikely(tty->flip.count >= TTY_FLIPBUF_SIZE)) {
tty->flip.work.func((void *)tty);
if (tty->flip.count >= TTY_FLIPBUF_SIZE)
return; // if TTY_DONT_FLIP is set
}

in 2.4 it is

if (tty->flip.count >= TTY_FLIPBUF_SIZE) {
tty->flip.tqueue.routine((void *) tty);
if (tty->flip.count >= TTY_FLIPBUF_SIZE)
return; // if TTY_DONT_FLIP is set
}

tty->flip.work.func and tty->flip.tqueue.routine
are set to flush_to_ldisc()

--
Paul Fulghum
paulkf@xxxxxxxxxxxxx

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/