![]() | |||||||||||||
Messages in this thread Patch in this message |
On Mon, Jun 21, 2004 at 12:39:44AM -0700, Andrew Morton wrote: > Dan Aloni <da-x@gmx.net> wrote: > > > > On Sun, Jun 20, 2004 at 11:58:24PM -0700, Andrew Morton wrote: > > > Dan Aloni <da-x@gmx.net> wrote: > > > > > > > > The rest of the kernel treats tty->driver->chars_in_buffer as a possible > > > > NULL. This patch changes normal_poll() to be consistent with the rest of > > > > the code. > > > > > > It would be better to change the rest of the kernel - remove the tests. > > > > > > If any driver fails to implement ->chars_in_buffer() then we get a nice > > > oops which tells us that driver needs a stub handler. > > > > Are you sure that it won't affect the logic in tty_wait_until_sent() > > drastically? It acts quite differently when ->chars_in_buffer == NULL. > > I did a quick grep and it appears that all drivers have set ->chars_in_buffer(). > > I suspect there are no drivers which fail to set chars_in_buffer. > Otherwise normal_poll() would have been oopsing in 2.4, 2.5 and 2.6? Right. Perhaps this should be applied: Signed-off-by: Dan Aloni <da-x@colinux.org> --- linux-2.6.7/drivers/char/n_hdlc.c +++ linux-2.6.7/drivers/char/n_hdlc.c @@ -760,8 +760,7 @@ case TIOCOUTQ: /* get the pending tx byte count in the driver */ - count = tty->driver->chars_in_buffer ? - tty->driver->chars_in_buffer(tty) : 0; + count = tty->driver->chars_in_buffer(tty); /* add size of next output frame in queue */ spin_lock_irqsave(&n_hdlc->tx_buf_list.spinlock,flags); if (n_hdlc->tx_buf_list.head) --- linux-2.6.7/drivers/char/tty_ioctl.c +++ linux-2.6.7/drivers/char/tty_ioctl.c @@ -45,8 +45,6 @@ printk(KERN_DEBUG "%s wait until sent...\n", tty_name(tty, buf)); #endif - if (!tty->driver->chars_in_buffer) - return; add_wait_queue(&tty->write_wait, &wait); if (!timeout) timeout = MAX_SCHEDULE_TIMEOUT; @@ -461,8 +459,7 @@ } return 0; case TIOCOUTQ: - return put_user(tty->driver->chars_in_buffer ? - tty->driver->chars_in_buffer(tty) : 0, + return put_user(tty->driver->chars_in_buffer(tty), (int __user *) arg); case TIOCINQ: retval = tty->read_cnt; -- Dan Aloni da-x@colinux.org - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 14:04 [from the cache] ©2003-2008 | |||||||||||||