--- zzzz-none-000/linux-2.6.28.10/drivers/char/n_tty.c 2009-05-02 18:54:43.000000000 +0000 +++ fusiv-7390-686/linux-2.6.28.10/drivers/char/n_tty.c 2016-02-10 17:16:55.000000000 +0000 @@ -1495,6 +1495,7 @@ * This code must be sure never to sleep through a hangup. */ +unsigned int g_avm_console_open; static ssize_t n_tty_write(struct tty_struct *tty, struct file *file, const unsigned char *buf, size_t nr) { @@ -1510,6 +1511,13 @@ return retval; } + if (tty->driver->ops->is_avm_console) { + if (( ! g_avm_console_open) && tty->driver->ops->is_avm_console(tty)) { + b += nr; + goto skip_out; + } + } + add_wait_queue(&tty->write_wait, &wait); while (1) { set_current_state(TASK_INTERRUPTIBLE); @@ -1565,6 +1573,7 @@ break_out: __set_current_state(TASK_RUNNING); remove_wait_queue(&tty->write_wait, &wait); +skip_out: return (b - buf) ? b - buf : retval; } @@ -1664,3 +1673,13 @@ .write_wakeup = n_tty_write_wakeup }; +/*------------------------------------------------------------------------------------------*\ + * keine Ausgaben auf der Console ohne g_avm_console_open=1 + * n_tty_read schaltet die Ausgaben auf der Console wieder frei + * beim Kunden wird kein Read auf der Console erfolgen, also gibt es auch keine Ausgaben +\*------------------------------------------------------------------------------------------*/ +static int setup_debug_console(char *p) { + g_avm_console_open = 1; + return 0; +} +__setup("debug_console", setup_debug_console);