Re: Question about TTY_DO_WRITE_WAKEUP

From: Thomas Pfaff
Date: Thu Nov 20 2008 - 10:12:58 EST



On Thu, 20 Nov 2008, Alan Cox wrote:

> > Is the TTY_DO_WRITE_WAKEUP bit some kind of cruft that can be removed entirely
> > or should i generate a patch for serial devices only ?
>
> It shouldn't happen at the serial level. The line discipline sets the
> flag as and when it has data for the process above.
>
> The expected flow in normal use is
>
> app writes to tty
> data goes to n_tty ldisc
> goes to tty
> n_tty ldisc seems tty blocked
> n_tty ldisc sets DO_WRITE_WAKEUP
>
> tty gets ucongested
> calls n_tty write_wakeup
> SIGIO sent
> Flag set again
>
> The important part of the logic is in n_tty.c and tty_io.c

Following the source the TTY_DO_WRITE_WAKEUP flag is set in n_tty_write_wakeup.

But n_tty_write_wakeup is only called from tty_wakeup when this bit is already
set, therefore it makes no sense to set this bit in n_tty_write_wakeup again.

The flow looks to me as

If the tty driver sets TTY_DO_WRITE_WAKEUP a SIGIO is generated on every
tty_wakeup.

If it is not set then n_tty_write_wakeup is never called and a SIGIO is not
generated.

Thomas

--
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/