tty: The big operations rework
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Wed, 30 Apr 2008 07:54:13 +0000 (00:54 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 30 Apr 2008 15:29:47 +0000 (08:29 -0700)
commitf34d7a5b7010b82fe97da95496b9971435530062
tree87e2abec1e33ed4fe5e63ee2fd000bc2ad745e57
parent251b8dd7eee30fda089a1dc088abf4fc9a0dee9c
tty: The big operations rework

- Operations are now a shared const function block as with most other Linux
  objects

- Introduce wrappers for some optional functions to get consistent behaviour

- Wrap put_char which used to be patched by the tty layer

- Document which functions are needed/optional

- Make put_char report success/fail

- Cache the driver->ops pointer in the tty as tty->ops

- Remove various surplus lock calls we no longer need

- Remove proc_write method as noted by Alexey Dobriyan

- Introduce some missing sanity checks where certain driver/ldisc
  combinations would oops as they didn't check needed methods were present

[akpm@linux-foundation.org: fix fs/compat_ioctl.c build]
[akpm@linux-foundation.org: fix isicom]
[akpm@linux-foundation.org: fix arch/ia64/hp/sim/simserial.c build]
[akpm@linux-foundation.org: fix kgdb]
Signed-off-by: Alan Cox <alan@redhat.com>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Cc: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
30 files changed:
arch/ia64/hp/sim/simserial.c
drivers/bluetooth/hci_ldisc.c
drivers/char/ip2/ip2main.c
drivers/char/isicom.c
drivers/char/keyboard.c
drivers/char/n_hdlc.c
drivers/char/n_r3964.c
drivers/char/n_tty.c
drivers/char/tty_io.c
drivers/char/tty_ioctl.c
drivers/input/serio/serport.c
drivers/isdn/gigaset/ser-gigaset.c
drivers/net/hamradio/6pack.c
drivers/net/hamradio/mkiss.c
drivers/net/irda/irtty-sir.c
drivers/net/ppp_async.c
drivers/net/ppp_synctty.c
drivers/net/slip.c
drivers/net/wan/x25_asy.c
drivers/serial/kgdboc.c
drivers/serial/serial_core.c
drivers/usb/serial/digi_acceleport.c
drivers/usb/serial/usb-serial.c
drivers/usb/serial/whiteheat.c
fs/compat_ioctl.c
fs/proc/proc_tty.c
include/linux/tty.h
include/linux/tty_driver.h
kernel/printk.c
net/irda/ircomm/ircomm_tty.c