|
From: James S. <jsi...@us...> - 2001-12-09 01:43:38
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/char
In directory usw-pr-cvs1:/tmp/cvs-serv9503/drivers/char
Modified Files:
Config.in tty_io.c vt.c
Log Message:
Almost done with the new console lock. I need to do one more thing. Allow for multihead again.
Index: Config.in
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/Config.in,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- Config.in 2001/11/23 04:10:15 1.31
+++ Config.in 2001/12/09 01:43:35 1.32
@@ -103,6 +103,9 @@
fi
source drivers/i2c/Config.in
+if [ "$CONFIG_ARM" = "y" ]; then
+ source drivers/l3/Config.in
+fi
tristate 'QIC-02 tape support' CONFIG_QIC02_TAPE
if [ "$CONFIG_QIC02_TAPE" != "n" ]; then
Index: tty_io.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/tty_io.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -d -r1.41 -r1.42
--- tty_io.c 2001/12/08 00:54:01 1.41
+++ tty_io.c 2001/12/09 01:43:35 1.42
@@ -2078,9 +2078,12 @@
tty_drivers = driver;
//if (!(driver->flags & TTY_DRIVER_CONSOLE))
-
- driver->tty_lock = kmalloc(sizeof(struct semaphore), GFP_KERNEL);
- init_MUTEX(driver->tty_lock);
+
+ if (!driver->console) {
+ driver->tty_lock = kmalloc(sizeof(struct semaphore),GFP_KERNEL);
+ init_MUTEX(driver->tty_lock);
+ } else
+ driver->tty_lock = &driver->console->lock;
if ( !(driver->flags & TTY_DRIVER_NO_DEVFS) ) {
for(i = 0; i < driver->num; i++)
Index: vt.c
===================================================================
RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/char/vt.c,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -d -r1.114 -r1.115
--- vt.c 2001/12/08 00:58:07 1.114
+++ vt.c 2001/12/09 01:43:35 1.115
@@ -1563,14 +1563,10 @@
#endif
}
-static struct tty_struct *vty_table[MAX_NR_USER_CONSOLES];
-static struct termios *vty_termios[MAX_NR_USER_CONSOLES];
-static struct termios *vty_termios_locked[MAX_NR_USER_CONSOLES];
-struct tty_driver vty_driver;
-static int vty_refcount;
-
int __init vty_init(void)
{
+ struct tty_driver *vty_driver;
+
#if defined (CONFIG_PROM_CONSOLE)
prom_con_init();
#endif
@@ -1580,35 +1576,39 @@
kbd_init();
console_map_init();
- memset(&vty_driver, 0, sizeof(struct tty_driver));
-
- vty_driver.refcount = &vty_refcount;
- vty_driver.table = vty_table;
- vty_driver.termios = vty_termios;
- vty_driver.termios_locked = vty_termios_locked;
+ vty_driver = kmalloc(sizeof(struct tty_driver), GFP_KERNEL);
+ memset(vty_driver, 0, sizeof(struct tty_driver));
+
+ vty_driver->refcount = kmalloc(sizeof(int), GFP_KERNEL);
+ vty_driver->table = kmalloc(sizeof(struct tty_struct) * MAX_NR_USER_CONSOLES, GFP_KERNEL);
+ vty_driver->termios = kmalloc(sizeof(struct termios) * MAX_NR_USER_CONSOLES, GFP_KERNEL);
+ vty_driver->termios_locked = kmalloc(sizeof(struct termios) * MAX_NR_USER_CONSOLES, GFP_KERNEL);
- vty_driver.magic = TTY_DRIVER_MAGIC;
- vty_driver.name = "vc/%d";
- vty_driver.name_base = 0; //current_vc;
- vty_driver.major = TTY_MAJOR;
- vty_driver.minor_start = 0; //current_vc;
- vty_driver.num = MAX_NR_USER_CONSOLES;
- vty_driver.type = TTY_DRIVER_TYPE_CONSOLE;
- vty_driver.init_termios = tty_std_termios;
- vty_driver.flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_RESET_TERMIOS;
- vty_driver.open = vt_open;
- vty_driver.close = vt_close;
- vty_driver.write = vt_write;
- vty_driver.write_room = vt_write_room;
- vty_driver.put_char = vt_put_char;
- vty_driver.flush_chars = vt_flush_chars;
- vty_driver.chars_in_buffer = vt_chars_in_buffer;
- vty_driver.ioctl = vt_ioctl;
- vty_driver.stop = vt_stop;
- vty_driver.start = vt_start;
- vty_driver.throttle = vt_throttle;
- vty_driver.unthrottle = vt_unthrottle;
- if (tty_register_driver(&vty_driver))
+ vty_driver->magic = TTY_DRIVER_MAGIC;
+ vty_driver->name = "vc/%d";
+ vty_driver->name_base = 0; //current_vc;
+ vty_driver->major = TTY_MAJOR;
+ vty_driver->minor_start = 0; //current_vc;
+ vty_driver->num = MAX_NR_USER_CONSOLES;
+ vty_driver->type = TTY_DRIVER_TYPE_CONSOLE;
+ vty_driver->init_termios = tty_std_termios;
+ vty_driver->flags = TTY_DRIVER_REAL_RAW | TTY_DRIVER_RESET_TERMIOS;
+#ifdef CONFIG_VT_CONSOLE
+ vty_driver->console = &vt_console_driver;
+#endif
+ vty_driver->open = vt_open;
+ vty_driver->close = vt_close;
+ vty_driver->write = vt_write;
+ vty_driver->write_room = vt_write_room;
+ vty_driver->put_char = vt_put_char;
+ vty_driver->flush_chars = vt_flush_chars;
+ vty_driver->chars_in_buffer = vt_chars_in_buffer;
+ vty_driver->ioctl = vt_ioctl;
+ vty_driver->stop = vt_stop;
+ vty_driver->start = vt_start;
+ vty_driver->throttle = vt_throttle;
+ vty_driver->unthrottle = vt_unthrottle;
+ if (tty_register_driver(vty_driver))
printk("Couldn't register console driver\n");
vcs_init();
return 0;
|