diff options
author | jdike <jdike> | 2003-11-10 23:00:05 +0000 |
---|---|---|
committer | jdike <jdike> | 2003-11-10 23:00:05 +0000 |
commit | 78cb5b233dfb0ff3dec97f594dd44159c0c887c0 (patch) | |
tree | 3e6331fbddbb04bbf4ff470e288d1dd12411c3f9 | |
parent | bd6d2dc353665c0a5abeaf5f1597fd83b4b7fff6 (diff) | |
download | uml-history-78cb5b233dfb0ff3dec97f594dd44159c0c887c0.tar.gz |
Added console support.
Changed the console driver to resemble the serial line changes.
-rw-r--r-- | arch/um/drivers/ssl.c | 47 | ||||
-rw-r--r-- | arch/um/drivers/stdio_console.c | 24 | ||||
-rw-r--r-- | arch/um/include/2_5compat.h | 13 |
3 files changed, 60 insertions, 24 deletions
diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c index 4b26433..6270713 100644 --- a/arch/um/drivers/ssl.c +++ b/arch/um/drivers/ssl.c @@ -10,6 +10,7 @@ #include "linux/major.h" #include "linux/mm.h" #include "linux/init.h" +#include "linux/console.h" #include "asm/termbits.h" #include "asm/irq.h" #include "line.h" @@ -150,6 +151,9 @@ static int ssl_ioctl(struct tty_struct *tty, struct file * file, case TCSETSW: case TCGETA: case TIOCMGET: + case TCSBRK: + case TCSBRKP: + case TIOCMSET: ret = -ENOIOCTLCMD; break; default: @@ -213,6 +217,42 @@ static struct tty_driver ssl_driver = { */ static int ssl_init_done = 0; +static void ssl_console_write(struct console *c, const char *string, + unsigned len) +{ + struct line *line = &serial_lines[c->index]; + if(ssl_init_done) + down(&line->sem); + console_write_chan(&line->chan_list, string, len); + if(ssl_init_done) + up(&line->sem); +} + +static kdev_t ssl_console_device(struct console *c) +{ +#if 0 /* This is the 2.5 implementation */ +static struct tty_driver *ssl_console_device(struct console *c, int *index) + *index = c->index; + return ssl_driver; +#endif + + return mk_kdev(TTY_MAJOR, c->index); +} + +static int ssl_console_setup(struct console *co, char *options) +{ + return(0); +} + +static struct console ssl_cons = { + name: "ttyS", + write: ssl_console_write, + device: ssl_console_device, + setup: ssl_console_setup, + flags: CON_PRINTBUFFER, + index: -1, +}; + int ssl_init(void) { char *new_title; @@ -228,6 +268,7 @@ int ssl_init(void) new_title = add_xterm_umid(opts.xterm_title); if(new_title != NULL) opts.xterm_title = new_title; + register_console(&ssl_cons); ssl_init_done = 1; return(0); } @@ -236,9 +277,9 @@ __initcall(ssl_init); static int ssl_chan_setup(char *str) { - line_setup(serial_lines, sizeof(serial_lines)/sizeof(serial_lines[0]), - str, 1); - return(1); + return(line_setup(serial_lines, + sizeof(serial_lines)/sizeof(serial_lines[0]), + str, 1)); } __setup("ssl", ssl_chan_setup); diff --git a/arch/um/drivers/stdio_console.c b/arch/um/drivers/stdio_console.c index c66dbc7..e9a09fa 100644 --- a/arch/um/drivers/stdio_console.c +++ b/arch/um/drivers/stdio_console.c @@ -186,9 +186,13 @@ __initcall(stdio_init); static void console_write(struct console *console, const char *string, unsigned len) { - if(con_init_done) down(&vts[console->index].sem); - console_write_chan(&vts[console->index].chan_list, string, len); - if(con_init_done) up(&vts[console->index].sem); + struct line *line = &vts[console->index]; + + if(con_init_done) + down(&line->sem); + console_write_chan(&line->chan_list, string, len); + if(con_init_done) + up(&line->sem); } static struct tty_driver console_driver = { @@ -210,9 +214,14 @@ static int console_setup(struct console *co, char *options) return(0); } -static struct console stdiocons = INIT_CONSOLE("tty", console_write, - console_device, console_setup, - CON_PRINTBUFFER); +static struct console stdiocons = { + name: "tty", + write: console_write, + device: console_device, + setup: console_setup, + flags: CON_PRINTBUFFER, + index: -1, +}; void stdio_console_init(void) { @@ -223,8 +232,7 @@ void stdio_console_init(void) static int console_chan_setup(char *str) { - line_setup(vts, sizeof(vts)/sizeof(vts[0]), str, 1); - return(1); + return(line_setup(vts, sizeof(vts)/sizeof(vts[0]), str, 1)); } __setup("con", console_chan_setup); diff --git a/arch/um/include/2_5compat.h b/arch/um/include/2_5compat.h index d6e8fb6..58a719d 100644 --- a/arch/um/include/2_5compat.h +++ b/arch/um/include/2_5compat.h @@ -8,19 +8,6 @@ #include "linux/version.h" -#define INIT_CONSOLE(dev_name, write_proc, device_proc, setup_proc, f) { \ - name : dev_name, \ - write : write_proc, \ - read : NULL, \ - device : device_proc, \ - unblank : NULL, \ - setup : setup_proc, \ - flags : f, \ - index : -1, \ - cflag : 0, \ - next : NULL \ -} - #define INIT_ELV(queue, elv) elevator_init(elv, ELV_NOOP) #define ELV_NOOP ELEVATOR_NOOP |