patch-2.4.20 linux-2.4.20/drivers/char/tty_io.c
Next file: linux-2.4.20/drivers/char/tty_ioctl.c
Previous file: linux-2.4.20/drivers/char/tpqic02.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
Thu Nov 28 15:53:12 2002
- Orig file:
linux-2.4.19/drivers/char/tty_io.c
- Orig date:
Fri Aug 2 17:39:43 2002
diff -urN linux-2.4.19/drivers/char/tty_io.c linux-2.4.20/drivers/char/tty_io.c
@@ -106,6 +106,8 @@
extern void con_init_devfs (void);
#endif
+extern void disable_early_printk(void);
+
#define CONSOLE_DEV MKDEV(TTY_MAJOR,0)
#define TTY_DEV MKDEV(TTYAUX_MAJOR,0)
#define SYSCONS_DEV MKDEV(TTYAUX_MAJOR,1)
@@ -1659,6 +1661,21 @@
return 0;
}
+static int tty_generic_brk(struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg)
+{
+ if (cmd == TCSBRK && arg)
+ {
+ /* tcdrain case */
+ int retval = tty_check_change(tty);
+ if (retval)
+ return retval;
+ tty_wait_until_sent(tty, 0);
+ if (signal_pending(current))
+ return -EINTR;
+ }
+ return 0;
+}
+
/*
* Split this up, as gcc can choke on it otherwise..
*/
@@ -1692,11 +1709,12 @@
/* the driver doesn't support them. */
case TCSBRK:
case TCSBRKP:
- if (!tty->driver.ioctl)
- return 0;
- retval = tty->driver.ioctl(tty, file, cmd, arg);
+ retval = -ENOIOCTLCMD;
+ if (tty->driver.ioctl)
+ retval = tty->driver.ioctl(tty, file, cmd, arg);
+ /* Not driver handled */
if (retval == -ENOIOCTLCMD)
- retval = 0;
+ retval = tty_generic_brk(tty, file, cmd, arg);
return retval;
}
}
@@ -2184,6 +2202,9 @@
* set up the console device so that later boot sequences can
* inform about problems etc..
*/
+#ifdef CONFIG_EARLY_PRINTK
+ disable_early_printk();
+#endif
#ifdef CONFIG_VT
con_init();
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)