patch-2.1.4 linux/drivers/char/console.c
Next file: linux/drivers/char/consolemap.c
Previous file: linux/drivers/char/baycom.c
Back to the patch index
Back to the overall index
- Lines: 76
- Date:
Sun Oct 13 21:11:10 1996
- Orig file:
v2.1.3/linux/drivers/char/console.c
- Orig date:
Wed Oct 9 08:55:18 1996
diff -u --recursive --new-file v2.1.3/linux/drivers/char/console.c linux/drivers/char/console.c
@@ -1367,8 +1367,18 @@
set_leds();
}
-static int con_write(struct tty_struct * tty, int from_user,
- const unsigned char *buf, int count)
+static void con_flush_chars(struct tty_struct *tty)
+{
+ unsigned int currcons;
+ struct vt_struct *vt = (struct vt_struct *)tty->driver_data;
+
+ currcons = vt->vc_num;
+ if (vcmode != KD_GRAPHICS)
+ set_cursor(currcons);
+}
+
+static int do_con_write(struct tty_struct * tty, int from_user,
+ const unsigned char *buf, int count)
{
int c, tc, ok, n = 0;
unsigned int currcons;
@@ -1391,12 +1401,10 @@
disable_bh(CONSOLE_BH);
while (!tty->stopped && count) {
enable_bh(CONSOLE_BH);
- if (exception()) {
- n = -EFAULT;
- break;
- }
- c = from_user ? get_user(buf) : *buf;
- end_exception();
+ if (from_user)
+ get_user(c, buf);
+ else
+ c = *buf;
buf++; n++; count--;
disable_bh(CONSOLE_BH);
@@ -1827,12 +1835,26 @@
vc_state = ESnormal;
}
}
- if (vcmode != KD_GRAPHICS)
- set_cursor(currcons);
enable_bh(CONSOLE_BH);
return n;
}
+static int con_write(struct tty_struct * tty, int from_user,
+ const unsigned char *buf, int count)
+{
+ int retval;
+
+ retval = do_con_write(tty, from_user, buf, count);
+ con_flush_chars(tty);
+
+ return retval;
+}
+
+static void con_put_char(struct tty_struct *tty, unsigned char ch)
+{
+ do_con_write(tty, 0, &ch, 1);
+}
+
static int con_write_room(struct tty_struct *tty)
{
if (tty->stopped)
@@ -2019,6 +2041,8 @@
console_driver.open = con_open;
console_driver.write = con_write;
console_driver.write_room = con_write_room;
+ console_driver.put_char = con_put_char;
+ console_driver.flush_chars = con_flush_chars;
console_driver.chars_in_buffer = con_chars_in_buffer;
console_driver.ioctl = vt_ioctl;
console_driver.stop = con_stop;
FUNET's LINUX-ADM group, [email protected]
TCL-scripts by Sam Shen, [email protected]