diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2008-04-30 03:54:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 11:29:47 -0400 |
commit | f34d7a5b7010b82fe97da95496b9971435530062 (patch) | |
tree | 87e2abec1e33ed4fe5e63ee2fd000bc2ad745e57 /drivers/char/ip2 | |
parent | 251b8dd7eee30fda089a1dc088abf4fc9a0dee9c (diff) |
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>
Diffstat (limited to 'drivers/char/ip2')
-rw-r--r-- | drivers/char/ip2/ip2main.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index c4f4ca31f7c0..5ef69dcd2588 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c | |||
@@ -169,7 +169,7 @@ static int Fip_firmware_size; | |||
169 | static int ip2_open(PTTY, struct file *); | 169 | static int ip2_open(PTTY, struct file *); |
170 | static void ip2_close(PTTY, struct file *); | 170 | static void ip2_close(PTTY, struct file *); |
171 | static int ip2_write(PTTY, const unsigned char *, int); | 171 | static int ip2_write(PTTY, const unsigned char *, int); |
172 | static void ip2_putchar(PTTY, unsigned char); | 172 | static int ip2_putchar(PTTY, unsigned char); |
173 | static void ip2_flush_chars(PTTY); | 173 | static void ip2_flush_chars(PTTY); |
174 | static int ip2_write_room(PTTY); | 174 | static int ip2_write_room(PTTY); |
175 | static int ip2_chars_in_buf(PTTY); | 175 | static int ip2_chars_in_buf(PTTY); |
@@ -1616,10 +1616,9 @@ ip2_close( PTTY tty, struct file *pFile ) | |||
1616 | 1616 | ||
1617 | serviceOutgoingFifo ( pCh->pMyBord ); | 1617 | serviceOutgoingFifo ( pCh->pMyBord ); |
1618 | 1618 | ||
1619 | if ( tty->driver->flush_buffer ) | 1619 | if ( tty->driver->ops->flush_buffer ) |
1620 | tty->driver->flush_buffer(tty); | 1620 | tty->driver->ops->flush_buffer(tty); |
1621 | if ( tty->ldisc.flush_buffer ) | 1621 | tty_ldisc_flush(tty); |
1622 | tty->ldisc.flush_buffer(tty); | ||
1623 | tty->closing = 0; | 1622 | tty->closing = 0; |
1624 | 1623 | ||
1625 | pCh->pTTY = NULL; | 1624 | pCh->pTTY = NULL; |
@@ -1738,7 +1737,7 @@ ip2_write( PTTY tty, const unsigned char *pData, int count) | |||
1738 | /* */ | 1737 | /* */ |
1739 | /* */ | 1738 | /* */ |
1740 | /******************************************************************************/ | 1739 | /******************************************************************************/ |
1741 | static void | 1740 | static int |
1742 | ip2_putchar( PTTY tty, unsigned char ch ) | 1741 | ip2_putchar( PTTY tty, unsigned char ch ) |
1743 | { | 1742 | { |
1744 | i2ChanStrPtr pCh = tty->driver_data; | 1743 | i2ChanStrPtr pCh = tty->driver_data; |
@@ -1753,6 +1752,7 @@ ip2_putchar( PTTY tty, unsigned char ch ) | |||
1753 | ip2_flush_chars( tty ); | 1752 | ip2_flush_chars( tty ); |
1754 | } else | 1753 | } else |
1755 | write_unlock_irqrestore(&pCh->Pbuf_spinlock, flags); | 1754 | write_unlock_irqrestore(&pCh->Pbuf_spinlock, flags); |
1755 | return 1; | ||
1756 | 1756 | ||
1757 | // ip2trace (CHANN, ITRC_PUTC, ITRC_RETURN, 1, ch ); | 1757 | // ip2trace (CHANN, ITRC_PUTC, ITRC_RETURN, 1, ch ); |
1758 | } | 1758 | } |