Messages in this thread | | | From | Oliver Neukum <> | Subject | Re: [SOLVED] Serial buffer corruption [was Re: FTDI usb-serial possible bug] | Date | Fri, 4 May 2007 15:41:28 +0200 |
| |
> > How do you flush the buffers? Simply reading them out? > > Nope. In python I use the flushInput() method of the serial object > defined by the pyserial library[0]. The method does just this system > call: > > termios.tcflush(self.fd, TERMIOS.TCIFLUSH)
case TCFLSH: retval = tty_check_change(tty); if (retval) return retval; ld = tty_ldisc_ref(tty); switch (arg) { case TCIFLUSH: if (ld && ld->flush_buffer) ld->flush_buffer(tty); break; case TCIOFLUSH: if (ld && ld->flush_buffer) ld->flush_buffer(tty); /* fall through */ case TCOFLUSH: if (tty->driver->flush_buffer) tty->driver->flush_buffer(tty); break; default: tty_ldisc_deref(ld); return -EINVAL; } tty_ldisc_deref(ld); return 0;
Most likely you were using n_tty.
static void n_tty_flush_buffer(struct tty_struct * tty) { /* clear everything and unthrottle the driver */ reset_buffer_flags(tty); if (!tty->link) return;
if (tty->link->packet) { tty->ctrl_status |= TIOCPKT_FLUSHREAD; wake_up_interruptible(&tty->link->read_wait); } }
It sets TIOCPKT_FLUSHREAD, which is used nowhere else in the kernel. And I am confused. Could somebody who has some experience in the tty layer comment on that?
Regards Oliver - 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/
| |