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; |