summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdike <jdike>2003-11-10 23:00:05 +0000
committerjdike <jdike>2003-11-10 23:00:05 +0000
commit78cb5b233dfb0ff3dec97f594dd44159c0c887c0 (patch)
tree3e6331fbddbb04bbf4ff470e288d1dd12411c3f9
parentbd6d2dc353665c0a5abeaf5f1597fd83b4b7fff6 (diff)
downloaduml-history-78cb5b233dfb0ff3dec97f594dd44159c0c887c0.tar.gz
Added console support.
Changed the console driver to resemble the serial line changes.
-rw-r--r--arch/um/drivers/ssl.c47
-rw-r--r--arch/um/drivers/stdio_console.c24
-rw-r--r--arch/um/include/2_5compat.h13
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