Don't allocate an input buffer for a TTY when the receiver is turned off.

When the termios CREAD flag is not set, it makes little sense to
allocate an input buffer. Just set the size to 0 in this case to reduce
memory footprint.

Disallow CREAD to be disabled for pseudo-devices to prevent
foot-shooting.
This commit is contained in:
Ed Schouten 2009-12-01 19:14:57 +00:00
parent 0e5098428f
commit 6eaf04022b

View File

@ -102,10 +102,11 @@ static const char *dev_console_filename;
static void
tty_watermarks(struct tty *tp)
{
size_t bs;
size_t bs = 0;
/* Provide an input buffer for 0.2 seconds of data. */
bs = MIN(tp->t_termios.c_ispeed / 5, TTYBUF_MAX);
if (tp->t_termios.c_cflag & CREAD)
bs = MIN(tp->t_termios.c_ispeed / 5, TTYBUF_MAX);
ttyinq_setsize(&tp->t_inq, tp, bs);
/* Set low watermark at 10% (when 90% is available). */
@ -890,6 +891,7 @@ ttydevsw_defparam(struct tty *tp, struct termios *t)
t->c_ospeed = B50;
else if (t->c_ospeed > B115200)
t->c_ospeed = B115200;
t->c_cflag |= CREAD;
return (0);
}