Hi,

this is the fifth series of patches which finally move tty buffers
from tty_struct (present from open to close/hangup) to tty_port
(present as long as the device). This allows us to get rid of the tty
refcounting in the interrupt service routines and other hot paths
after we are done. This is because we do not need to handle races
among ISRs, timers, hangups and others, because tty_port lives as long
as an interrupt/timer tick may occur. Unlike tty_struct.

This set also cleans up devpts handling a bit. Devpts used to play
with tty->driver_data which was a bit ugly. Now devpts returns a node
which we store to driver_data and pass it back when we need devpts to
kill that. As a result, we can do that in the pty code instead of an
ugly hook in tty_release.

Finally, the set moves all the n_tty private stuff from tty_struct to
its own (internal) structure. This was an intention last time ago (at
least here), but the races and undefined ldisc->open/close behavior
did not allow us to do that. Now that we have ldisc kills and waits
and bells and whistles we could finally go ahead.

As usual, standard x86 stuff was runtime-tested. The rest is only
checked to be compilation-errors free.

Jiri Slaby (21):
  TTY: devpts, don't care about TTY in devpts_get_tty
  TTY: devpts, return created inode from devpts_pty_new
  TTY: devpts, do not set driver_data
  TTY: devpts, document devpts inode operations
  TTY: move devpts kill to pty
  TTY: vt, fix paste_selection ldisc handling
  TTY: ldisc, wait for idle ldisc in release
  TTY: hci_ldisc, remove invalid check in open
  TTY: n_tty, simplify read_buf+echo_buf allocation
  TTY: n_tty, remove bogus checks
  TTY: audit, stop accessing tty->icount
  TTY: n_tty, add ldisc data to n_tty
  TTY: move ldisc data from tty_struct: simple members
  TTY: move ldisc data from tty_struct: bitmaps
  TTY: move ldisc data from tty_struct: read_* and echo_* and canon_*
    stuff
  TTY: move ldisc data from tty_struct: locks
  TTY: n_tty, propagate n_tty_data
  TTY: move TTY_FLUSH* flags to tty_port
  TTY: tty_buffer, cache pointer to tty->buf
  TTY: add port -> tty link
  TTY: move tty buffers to tty_port

 drivers/bluetooth/hci_ldisc.c |   7 +-
 drivers/tty/n_tty.c           | 752 ++++++++++++++++++++++--------------------
 drivers/tty/pty.c             |  30 +-
 drivers/tty/tty_audit.c       |  15 +-
 drivers/tty/tty_buffer.c      | 224 +++++++------
 drivers/tty/tty_io.c          |  15 +-
 drivers/tty/tty_ldisc.c       |  15 +-
 drivers/tty/tty_port.c        |   2 +
 drivers/tty/vt/selection.c    |   9 +-
 fs/devpts/inode.c             |  61 ++--
 include/linux/devpts_fs.h     |  20 +-
 include/linux/tty.h           |  44 +--
 include/linux/tty_flip.h      |   2 +-
 13 files changed, 633 insertions(+), 563 deletions(-)

-- 
1.7.12.3


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

Reply via email to