n_tty: clean up old code to follow coding style and (mostly) checkpatch

Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Alan Cox 2008-02-08 04:18:44 -08:00 committed by Linus Torvalds
parent db1acaa632
commit 4edf1827ea

View file

@ -1,6 +1,6 @@
/* /*
* n_tty.c --- implements the N_TTY line discipline. * n_tty.c --- implements the N_TTY line discipline.
* *
* This code used to be in tty_io.c, but things are getting hairy * This code used to be in tty_io.c, but things are getting hairy
* enough that it made sense to split things off. (The N_TTY * enough that it made sense to split things off. (The N_TTY
* processing has changed so much that it's hardly recognizable, * processing has changed so much that it's hardly recognizable,
@ -8,19 +8,19 @@
* *
* Note that the open routine for N_TTY is guaranteed never to return * Note that the open routine for N_TTY is guaranteed never to return
* an error. This is because Linux will fall back to setting a line * an error. This is because Linux will fall back to setting a line
* to N_TTY if it can not switch to any other line discipline. * to N_TTY if it can not switch to any other line discipline.
* *
* Written by Theodore Ts'o, Copyright 1994. * Written by Theodore Ts'o, Copyright 1994.
* *
* This file also contains code originally written by Linus Torvalds, * This file also contains code originally written by Linus Torvalds,
* Copyright 1991, 1992, 1993, and by Julian Cowley, Copyright 1994. * Copyright 1991, 1992, 1993, and by Julian Cowley, Copyright 1994.
* *
* This file may be redistributed under the terms of the GNU General Public * This file may be redistributed under the terms of the GNU General Public
* License. * License.
* *
* Reduced memory usage for older ARM systems - Russell King. * Reduced memory usage for older ARM systems - Russell King.
* *
* 2000/01/20 Fixed SMP locking on put_tty_queue using bits of * 2000/01/20 Fixed SMP locking on put_tty_queue using bits of
* the patch by Andrew J. Kroll <ag784@freenet.buffalo.edu> * the patch by Andrew J. Kroll <ag784@freenet.buffalo.edu>
* who actually finally proved there really was a race. * who actually finally proved there really was a race.
* *
@ -144,11 +144,11 @@ static void put_tty_queue(unsigned char c, struct tty_struct *tty)
* Can sleep, may be called under the atomic_read_lock mutex but * Can sleep, may be called under the atomic_read_lock mutex but
* this is not guaranteed. * this is not guaranteed.
*/ */
static void check_unthrottle(struct tty_struct * tty) static void check_unthrottle(struct tty_struct *tty)
{ {
if (tty->count && if (tty->count &&
test_and_clear_bit(TTY_THROTTLED, &tty->flags) && test_and_clear_bit(TTY_THROTTLED, &tty->flags) &&
tty->driver->unthrottle) tty->driver->unthrottle)
tty->driver->unthrottle(tty); tty->driver->unthrottle(tty);
} }
@ -157,7 +157,7 @@ static void check_unthrottle(struct tty_struct * tty)
* reset_buffer_flags - reset buffer state * reset_buffer_flags - reset buffer state
* @tty: terminal to reset * @tty: terminal to reset
* *
* Reset the read buffer counters, clear the flags, * Reset the read buffer counters, clear the flags,
* and make sure the driver is unthrottled. Called * and make sure the driver is unthrottled. Called
* from n_tty_open() and n_tty_flush_buffer(). * from n_tty_open() and n_tty_flush_buffer().
*/ */
@ -186,12 +186,12 @@ static void reset_buffer_flags(struct tty_struct *tty)
* FIXME: tty->ctrl_status is not spinlocked and relies on * FIXME: tty->ctrl_status is not spinlocked and relies on
* lock_kernel() still. * lock_kernel() still.
*/ */
static void n_tty_flush_buffer(struct tty_struct * tty) static void n_tty_flush_buffer(struct tty_struct *tty)
{ {
/* clear everything and unthrottle the driver */ /* clear everything and unthrottle the driver */
reset_buffer_flags(tty); reset_buffer_flags(tty);
if (!tty->link) if (!tty->link)
return; return;
@ -206,9 +206,9 @@ static void n_tty_flush_buffer(struct tty_struct * tty)
* @tty: tty device * @tty: tty device
* *
* Report the number of characters buffered to be delivered to user * Report the number of characters buffered to be delivered to user
* at this instant in time. * at this instant in time.
*/ */
static ssize_t n_tty_chars_in_buffer(struct tty_struct *tty) static ssize_t n_tty_chars_in_buffer(struct tty_struct *tty)
{ {
unsigned long flags; unsigned long flags;
@ -234,7 +234,7 @@ static ssize_t n_tty_chars_in_buffer(struct tty_struct *tty)
* character. We use this to correctly compute the on screen size * character. We use this to correctly compute the on screen size
* of the character when printing * of the character when printing
*/ */
static inline int is_utf8_continuation(unsigned char c) static inline int is_utf8_continuation(unsigned char c)
{ {
return (c & 0xc0) == 0x80; return (c & 0xc0) == 0x80;
@ -247,7 +247,7 @@ static inline int is_utf8_continuation(unsigned char c)
* Returns true if the utf8 character 'c' is a multibyte continuation * Returns true if the utf8 character 'c' is a multibyte continuation
* character and the terminal is in unicode mode. * character and the terminal is in unicode mode.
*/ */
static inline int is_continuation(unsigned char c, struct tty_struct *tty) static inline int is_continuation(unsigned char c, struct tty_struct *tty)
{ {
return I_IUTF8(tty) && is_utf8_continuation(c); return I_IUTF8(tty) && is_utf8_continuation(c);
@ -266,7 +266,7 @@ static inline int is_continuation(unsigned char c, struct tty_struct *tty)
* Called from both the receive and transmit sides and can be called * Called from both the receive and transmit sides and can be called
* re-entrantly. Relies on lock_kernel() still. * re-entrantly. Relies on lock_kernel() still.
*/ */
static int opost(unsigned char c, struct tty_struct *tty) static int opost(unsigned char c, struct tty_struct *tty)
{ {
int space, spaces; int space, spaces;
@ -339,9 +339,9 @@ static int opost(unsigned char c, struct tty_struct *tty)
* *
* Called from write_chan under the tty layer write lock. * Called from write_chan under the tty layer write lock.
*/ */
static ssize_t opost_block(struct tty_struct * tty, static ssize_t opost_block(struct tty_struct *tty,
const unsigned char * buf, unsigned int nr) const unsigned char *buf, unsigned int nr)
{ {
int space; int space;
int i; int i;
@ -386,7 +386,7 @@ static ssize_t opost_block(struct tty_struct * tty,
break_out: break_out:
if (tty->driver->flush_chars) if (tty->driver->flush_chars)
tty->driver->flush_chars(tty); tty->driver->flush_chars(tty);
i = tty->driver->write(tty, buf, i); i = tty->driver->write(tty, buf, i);
return i; return i;
} }
@ -398,7 +398,7 @@ break_out:
* *
* Queue a byte to the driver layer for output * Queue a byte to the driver layer for output
*/ */
static inline void put_char(unsigned char c, struct tty_struct *tty) static inline void put_char(unsigned char c, struct tty_struct *tty)
{ {
tty->driver->put_char(tty, c); tty->driver->put_char(tty, c);
@ -409,7 +409,7 @@ static inline void put_char(unsigned char c, struct tty_struct *tty)
* @c: unicode byte to echo * @c: unicode byte to echo
* @tty: terminal device * @tty: terminal device
* *
* Echo user input back onto the screen. This must be called only when * Echo user input back onto the screen. This must be called only when
* L_ECHO(tty) is true. Called from the driver receive_buf path. * L_ECHO(tty) is true. Called from the driver receive_buf path.
*/ */
@ -441,7 +441,7 @@ static inline void finish_erasing(struct tty_struct *tty)
* present in the stream from the driver layer. Handles the complexities * present in the stream from the driver layer. Handles the complexities
* of UTF-8 multibyte symbols. * of UTF-8 multibyte symbols.
*/ */
static void eraser(unsigned char c, struct tty_struct *tty) static void eraser(unsigned char c, struct tty_struct *tty)
{ {
enum { ERASE, WERASE, KILL } kill_type; enum { ERASE, WERASE, KILL } kill_type;
@ -541,7 +541,7 @@ static void eraser(unsigned char c, struct tty_struct *tty)
/* should never happen */ /* should never happen */
if (tty->column > 0x80000000) if (tty->column > 0x80000000)
tty->column = 0; tty->column = 0;
/* Now backup to that column. */ /* Now backup to that column. */
while (tty->column > col) { while (tty->column > col) {
@ -585,7 +585,7 @@ static void eraser(unsigned char c, struct tty_struct *tty)
* settings and character used. Called from the driver receive_buf * settings and character used. Called from the driver receive_buf
* path so serialized. * path so serialized.
*/ */
static inline void isig(int sig, struct tty_struct *tty, int flush) static inline void isig(int sig, struct tty_struct *tty, int flush)
{ {
if (tty->pgrp) if (tty->pgrp)
@ -606,7 +606,7 @@ static inline void isig(int sig, struct tty_struct *tty, int flush)
* *
* Called from the receive_buf path so single threaded. * Called from the receive_buf path so single threaded.
*/ */
static inline void n_tty_receive_break(struct tty_struct *tty) static inline void n_tty_receive_break(struct tty_struct *tty)
{ {
if (I_IGNBRK(tty)) if (I_IGNBRK(tty))
@ -635,7 +635,7 @@ static inline void n_tty_receive_break(struct tty_struct *tty)
* need locking as num_overrun and overrun_time are function * need locking as num_overrun and overrun_time are function
* private. * private.
*/ */
static inline void n_tty_receive_overrun(struct tty_struct *tty) static inline void n_tty_receive_overrun(struct tty_struct *tty)
{ {
char buf[64]; char buf[64];
@ -662,9 +662,8 @@ static inline void n_tty_receive_overrun(struct tty_struct *tty)
static inline void n_tty_receive_parity_error(struct tty_struct *tty, static inline void n_tty_receive_parity_error(struct tty_struct *tty,
unsigned char c) unsigned char c)
{ {
if (I_IGNPAR(tty)) { if (I_IGNPAR(tty))
return; return;
}
if (I_PARMRK(tty)) { if (I_PARMRK(tty)) {
put_tty_queue('\377', tty); put_tty_queue('\377', tty);
put_tty_queue('\0', tty); put_tty_queue('\0', tty);
@ -682,7 +681,7 @@ static inline void n_tty_receive_parity_error(struct tty_struct *tty,
* @c: character * @c: character
* *
* Process an individual character of input received from the driver. * Process an individual character of input received from the driver.
* This is serialized with respect to itself by the rules for the * This is serialized with respect to itself by the rules for the
* driver above. * driver above.
*/ */
@ -694,7 +693,7 @@ static inline void n_tty_receive_char(struct tty_struct *tty, unsigned char c)
put_tty_queue(c, tty); put_tty_queue(c, tty);
return; return;
} }
if (I_ISTRIP(tty)) if (I_ISTRIP(tty))
c &= 0x7f; c &= 0x7f;
if (I_IUCLC(tty) && L_IEXTEN(tty)) if (I_IUCLC(tty) && L_IEXTEN(tty))
@ -739,7 +738,7 @@ static inline void n_tty_receive_char(struct tty_struct *tty, unsigned char c)
put_tty_queue(c, tty); put_tty_queue(c, tty);
return; return;
} }
if (c == '\r') { if (c == '\r') {
if (I_IGNCR(tty)) if (I_IGNCR(tty))
return; return;
@ -825,8 +824,8 @@ send_signal:
goto handle_newline; goto handle_newline;
} }
if (c == EOF_CHAR(tty)) { if (c == EOF_CHAR(tty)) {
if (tty->canon_head != tty->read_head) if (tty->canon_head != tty->read_head)
set_bit(TTY_PUSH, &tty->flags); set_bit(TTY_PUSH, &tty->flags);
c = __DISABLED_CHAR; c = __DISABLED_CHAR;
goto handle_newline; goto handle_newline;
} }
@ -850,7 +849,7 @@ send_signal:
if (I_PARMRK(tty) && c == (unsigned char) '\377') if (I_PARMRK(tty) && c == (unsigned char) '\377')
put_tty_queue(c, tty); put_tty_queue(c, tty);
handle_newline: handle_newline:
spin_lock_irqsave(&tty->read_lock, flags); spin_lock_irqsave(&tty->read_lock, flags);
set_bit(tty->read_head, tty->read_flags); set_bit(tty->read_head, tty->read_flags);
put_tty_queue_nolock(c, tty); put_tty_queue_nolock(c, tty);
@ -863,7 +862,7 @@ send_signal:
return; return;
} }
} }
finish_erasing(tty); finish_erasing(tty);
if (L_ECHO(tty)) { if (L_ECHO(tty)) {
if (tty->read_cnt >= N_TTY_BUF_SIZE-1) { if (tty->read_cnt >= N_TTY_BUF_SIZE-1) {
@ -884,7 +883,7 @@ send_signal:
put_tty_queue(c, tty); put_tty_queue(c, tty);
put_tty_queue(c, tty); put_tty_queue(c, tty);
} }
/** /**
@ -898,12 +897,10 @@ send_signal:
static void n_tty_write_wakeup(struct tty_struct *tty) static void n_tty_write_wakeup(struct tty_struct *tty)
{ {
if (tty->fasync) if (tty->fasync) {
{ set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
kill_fasync(&tty->fasync, SIGIO, POLL_OUT); kill_fasync(&tty->fasync, SIGIO, POLL_OUT);
} }
return;
} }
/** /**
@ -918,7 +915,7 @@ static void n_tty_write_wakeup(struct tty_struct *tty)
* not from interrupt context. The driver is responsible for making * not from interrupt context. The driver is responsible for making
* calls one at a time and in order (or using flush_to_ldisc) * calls one at a time and in order (or using flush_to_ldisc)
*/ */
static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp, static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
char *fp, int count) char *fp, int count)
{ {
@ -950,7 +947,7 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
tty->read_cnt += i; tty->read_cnt += i;
spin_unlock_irqrestore(&tty->read_lock, cpuflags); spin_unlock_irqrestore(&tty->read_lock, cpuflags);
} else { } else {
for (i=count, p = cp, f = fp; i; i--, p++) { for (i = count, p = cp, f = fp; i; i--, p++) {
if (f) if (f)
flags = *f++; flags = *f++;
switch (flags) { switch (flags) {
@ -968,7 +965,7 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
n_tty_receive_overrun(tty); n_tty_receive_overrun(tty);
break; break;
default: default:
printk("%s: unknown flag %d\n", printk(KERN_ERR "%s: unknown flag %d\n",
tty_name(tty, buf), flags); tty_name(tty, buf), flags);
break; break;
} }
@ -1001,7 +998,7 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
int is_ignored(int sig) int is_ignored(int sig)
{ {
return (sigismember(&current->blocked, sig) || return (sigismember(&current->blocked, sig) ||
current->sighand->action[sig-1].sa.sa_handler == SIG_IGN); current->sighand->action[sig-1].sa.sa_handler == SIG_IGN);
} }
/** /**
@ -1011,16 +1008,16 @@ int is_ignored(int sig)
* *
* Called by the tty layer when the user changes termios flags so * Called by the tty layer when the user changes termios flags so
* that the line discipline can plan ahead. This function cannot sleep * that the line discipline can plan ahead. This function cannot sleep
* and is protected from re-entry by the tty layer. The user is * and is protected from re-entry by the tty layer. The user is
* guaranteed that this function will not be re-entered or in progress * guaranteed that this function will not be re-entered or in progress
* when the ldisc is closed. * when the ldisc is closed.
*/ */
static void n_tty_set_termios(struct tty_struct *tty, struct ktermios * old) static void n_tty_set_termios(struct tty_struct *tty, struct ktermios *old)
{ {
if (!tty) if (!tty)
return; return;
tty->icanon = (L_ICANON(tty) != 0); tty->icanon = (L_ICANON(tty) != 0);
if (test_bit(TTY_HW_COOK_IN, &tty->flags)) { if (test_bit(TTY_HW_COOK_IN, &tty->flags)) {
tty->raw = 1; tty->raw = 1;
@ -1085,12 +1082,12 @@ static void n_tty_set_termios(struct tty_struct *tty, struct ktermios * old)
* n_tty_close - close the ldisc for this tty * n_tty_close - close the ldisc for this tty
* @tty: device * @tty: device
* *
* Called from the terminal layer when this line discipline is * Called from the terminal layer when this line discipline is
* being shut down, either because of a close or becsuse of a * being shut down, either because of a close or becsuse of a
* discipline change. The function will not be called while other * discipline change. The function will not be called while other
* ldisc methods are in progress. * ldisc methods are in progress.
*/ */
static void n_tty_close(struct tty_struct *tty) static void n_tty_close(struct tty_struct *tty)
{ {
n_tty_flush_buffer(tty); n_tty_flush_buffer(tty);
@ -1104,7 +1101,7 @@ static void n_tty_close(struct tty_struct *tty)
* n_tty_open - open an ldisc * n_tty_open - open an ldisc
* @tty: terminal to open * @tty: terminal to open
* *
* Called when this line discipline is being attached to the * Called when this line discipline is being attached to the
* terminal device. Can sleep. Called serialized so that no * terminal device. Can sleep. Called serialized so that no
* other events will occur in parallel. No further open will occur * other events will occur in parallel. No further open will occur
* until a close. * until a close.
@ -1157,7 +1154,7 @@ static inline int input_available_p(struct tty_struct *tty, int amt)
* Called under the tty->atomic_read_lock sem * Called under the tty->atomic_read_lock sem
* *
*/ */
static int copy_from_read_buf(struct tty_struct *tty, static int copy_from_read_buf(struct tty_struct *tty,
unsigned char __user **b, unsigned char __user **b,
size_t *nr) size_t *nr)
@ -1186,7 +1183,8 @@ static int copy_from_read_buf(struct tty_struct *tty,
return retval; return retval;
} }
extern ssize_t redirected_tty_write(struct file *,const char *,size_t,loff_t *); extern ssize_t redirected_tty_write(struct file *, const char *,
size_t, loff_t *);
/** /**
* job_control - check job control * job_control - check job control
@ -1194,10 +1192,10 @@ extern ssize_t redirected_tty_write(struct file *,const char *,size_t,loff_t *);
* @file: file handle * @file: file handle
* *
* Perform job control management checks on this file/tty descriptor * Perform job control management checks on this file/tty descriptor
* and if appropriate send any needed signals and return a negative * and if appropriate send any needed signals and return a negative
* error code if action should be taken. * error code if action should be taken.
*/ */
static int job_control(struct tty_struct *tty, struct file *file) static int job_control(struct tty_struct *tty, struct file *file)
{ {
/* Job control check -- must be done at start and after /* Job control check -- must be done at start and after
@ -1208,7 +1206,7 @@ static int job_control(struct tty_struct *tty, struct file *file)
if (file->f_op->write != redirected_tty_write && if (file->f_op->write != redirected_tty_write &&
current->signal->tty == tty) { current->signal->tty == tty) {
if (!tty->pgrp) if (!tty->pgrp)
printk("read_chan: no tty->pgrp!\n"); printk(KERN_ERR "read_chan: no tty->pgrp!\n");
else if (task_pgrp(current) != tty->pgrp) { else if (task_pgrp(current) != tty->pgrp) {
if (is_ignored(SIGTTIN) || if (is_ignored(SIGTTIN) ||
is_current_pgrp_orphaned()) is_current_pgrp_orphaned())
@ -1220,7 +1218,7 @@ static int job_control(struct tty_struct *tty, struct file *file)
} }
return 0; return 0;
} }
/** /**
* read_chan - read function for tty * read_chan - read function for tty
@ -1236,7 +1234,7 @@ static int job_control(struct tty_struct *tty, struct file *file)
* *
* This code must be sure never to sleep through a hangup. * This code must be sure never to sleep through a hangup.
*/ */
static ssize_t read_chan(struct tty_struct *tty, struct file *file, static ssize_t read_chan(struct tty_struct *tty, struct file *file,
unsigned char __user *buf, size_t nr) unsigned char __user *buf, size_t nr)
{ {
@ -1252,14 +1250,14 @@ static ssize_t read_chan(struct tty_struct *tty, struct file *file,
do_it_again: do_it_again:
if (!tty->read_buf) { if (!tty->read_buf) {
printk("n_tty_read_chan: called with read_buf == NULL?!?\n"); printk(KERN_ERR "n_tty_read_chan: read_buf == NULL?!?\n");
return -EIO; return -EIO;
} }
c = job_control(tty, file); c = job_control(tty, file);
if(c < 0) if (c < 0)
return c; return c;
minimum = time = 0; minimum = time = 0;
timeout = MAX_SCHEDULE_TIMEOUT; timeout = MAX_SCHEDULE_TIMEOUT;
if (!tty->icanon) { if (!tty->icanon) {
@ -1287,8 +1285,7 @@ do_it_again:
if (file->f_flags & O_NONBLOCK) { if (file->f_flags & O_NONBLOCK) {
if (!mutex_trylock(&tty->atomic_read_lock)) if (!mutex_trylock(&tty->atomic_read_lock))
return -EAGAIN; return -EAGAIN;
} } else {
else {
if (mutex_lock_interruptible(&tty->atomic_read_lock)) if (mutex_lock_interruptible(&tty->atomic_read_lock))
return -ERESTARTSYS; return -ERESTARTSYS;
} }
@ -1314,11 +1311,11 @@ do_it_again:
so that any interrupt will set the state back to so that any interrupt will set the state back to
TASK_RUNNING. */ TASK_RUNNING. */
set_current_state(TASK_INTERRUPTIBLE); set_current_state(TASK_INTERRUPTIBLE);
if (((minimum - (b - buf)) < tty->minimum_to_wake) && if (((minimum - (b - buf)) < tty->minimum_to_wake) &&
((minimum - (b - buf)) >= 1)) ((minimum - (b - buf)) >= 1))
tty->minimum_to_wake = (minimum - (b - buf)); tty->minimum_to_wake = (minimum - (b - buf));
if (!input_available_p(tty, 0)) { if (!input_available_p(tty, 0)) {
if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) { if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
retval = -EIO; retval = -EIO;
@ -1355,7 +1352,7 @@ do_it_again:
if (tty->icanon) { if (tty->icanon) {
/* N.B. avoid overrun if nr == 0 */ /* N.B. avoid overrun if nr == 0 */
while (nr && tty->read_cnt) { while (nr && tty->read_cnt) {
int eol; int eol;
eol = test_and_clear_bit(tty->read_tail, eol = test_and_clear_bit(tty->read_tail,
tty->read_flags); tty->read_flags);
@ -1427,7 +1424,7 @@ do_it_again:
if (size) { if (size) {
retval = size; retval = size;
if (nr) if (nr)
clear_bit(TTY_PUSH, &tty->flags); clear_bit(TTY_PUSH, &tty->flags);
} else if (test_and_clear_bit(TTY_PUSH, &tty->flags)) } else if (test_and_clear_bit(TTY_PUSH, &tty->flags))
goto do_it_again; goto do_it_again;
@ -1450,9 +1447,9 @@ do_it_again:
* *
* This code must be sure never to sleep through a hangup. * This code must be sure never to sleep through a hangup.
*/ */
static ssize_t write_chan(struct tty_struct * tty, struct file * file, static ssize_t write_chan(struct tty_struct *tty, struct file *file,
const unsigned char * buf, size_t nr) const unsigned char *buf, size_t nr)
{ {
const unsigned char *b = buf; const unsigned char *b = buf;
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
@ -1542,8 +1539,9 @@ break_out:
* recompute the new limits. Possibly set_termios should issue * recompute the new limits. Possibly set_termios should issue
* a read wakeup to fix this bug. * a read wakeup to fix this bug.
*/ */
static unsigned int normal_poll(struct tty_struct * tty, struct file * file, poll_table *wait) static unsigned int normal_poll(struct tty_struct *tty, struct file *file,
poll_table *wait)
{ {
unsigned int mask = 0; unsigned int mask = 0;