From: Cyrill Gorunov <gorcu...@virtuozzo.com>

Here are some things left to be updated while moving to a new kernel:

 - setup default limit for ports up to 8192 bytes just like it done
   for regular unix PTY driver
 - report exactly how many bytes left available in the peer buffer
   (actually I don't remember where this 2K constant came from, maybe
    from early console or systemd specific in some old version we will
    figure out drawbacks once deep testing get started)
 - update termios settings to match unix PTY
 - drop chars_in_buffer operation since it is just makes a loop eating
   100% cpu upon start, seems like been occasionally sneaked in from
   previous kernels

https://jira.sw.ru/browse/PSBM-134658

Signed-off-by: Cyrill Gorcunov <gorcu...@gmail.com>
---
Index: vzkernel/drivers/tty/pty.c
===================================================================
--- vzkernel.orig/drivers/tty/pty.c
+++ vzkernel/drivers/tty/pty.c
@@ -765,6 +765,7 @@ static void vtty_standard_install(struct
 
        tty_driver_kref_get(driver);
        tty_port_init(tty->port);
+       tty_buffer_set_limit(tty->port, 8192);
        tty->port->itty = tty;
 }
 
@@ -880,14 +881,10 @@ static int vtty_write(struct tty_struct
 static unsigned int vtty_write_room(struct tty_struct *tty)
 {
        struct tty_struct *peer = tty->link;
-       int count = (tty->driver == vttym_driver) ? 2 : 1;
 
        if (tty->flow.stopped)
                return 0;
 
-       if (peer->count < count)
-               return 2048;
-
        return tty_buffer_space_avail(peer->port);
 }
 
@@ -911,7 +908,6 @@ static const struct tty_operations vtty_
        .cleanup        = pty_cleanup,
        .write          = vtty_write,
        .write_room     = vtty_write_room,
-       .chars_in_buffer= tty_chars_in_buffer,
        .set_termios    = pty_set_termios,
        .unthrottle     = pty_unthrottle,
        .flush_buffer   = pty_flush_buffer,
@@ -998,6 +994,8 @@ static int __init vtty_init(void)
        /* 38400 boud rate, 8 bit char size, enable receiver */
        vttym_driver->init_termios.c_cflag      = B38400 | CS8 | CREAD;
        vttym_driver->init_termios.c_lflag      = 0;
+       vttym_driver->init_termios.c_ispeed     = 38400;
+       vttym_driver->init_termios.c_ospeed     = 38400;
        tty_set_operations(vttym_driver, &vtty_ops);
 
        vttys_driver->driver_name               = "vtty_slave";
@@ -1009,6 +1007,8 @@ static int __init vtty_init(void)
        vttys_driver->subtype                   = PTY_TYPE_SLAVE;
        vttys_driver->init_termios              = tty_std_termios;
        vttys_driver->init_termios.c_cflag      = B38400 | CS8 | CREAD;
+       vttys_driver->init_termios.c_ispeed     = 38400;
+       vttys_driver->init_termios.c_ospeed     = 38400;
        tty_set_operations(vttys_driver, &vtty_ops);
 
        if (tty_register_driver(vttym_driver))
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to