summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i386/pc386/console/console.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1998-09-23 13:20:34 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1998-09-23 13:20:34 +0000
commit8a496e462e37f78fbbd20009f036623f062ccea1 (patch)
tree439d94e57e7aac3fc654885307c5c80c7fb564a9 /c/src/lib/libbsp/i386/pc386/console/console.c
parentSwitched "NEW_GAS" flag. (diff)
downloadrtems-8a496e462e37f78fbbd20009f036623f062ccea1.tar.bz2
Patch from Aleksey (Quality Quorum <qqi@world.std.com>):
1. Finally fixes raw interrupts for pc386 2. Makes some minor cleanup in console and startup 3. Makes rtems_termios_dequeue_characters() to return count of outstanding chars - it allows to simplify console isrs a little bit. 4. pc386 uart modified to be friendlier to termios parameter changes, to have minor performance improvement and to take advantage of of above termios modification.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/i386/pc386/console/console.c53
1 files changed, 34 insertions, 19 deletions
diff --git a/c/src/lib/libbsp/i386/pc386/console/console.c b/c/src/lib/libbsp/i386/pc386/console/console.c
index a204283b9d..c6f0c08c0f 100644
--- a/c/src/lib/libbsp/i386/pc386/console/console.c
+++ b/c/src/lib/libbsp/i386/pc386/console/console.c
@@ -58,27 +58,45 @@
int PC386ConsolePort = PC386_CONSOLE_PORT_CONSOLE;
-static int conSetAttr(int minor, const struct termios *);
extern BSP_polling_getchar_function_type BSP_poll_char;
/*-------------------------------------------------------------------------+
| External Prototypes
+--------------------------------------------------------------------------*/
-extern void _IBMPC_keyboard_isr(void);
-extern void _IBMPC_keyboard_isr_on(const rtems_irq_connect_data*);
-extern void _IBMPC_keyboard_isr_off(const rtems_irq_connect_data*);
-extern int _IBMPC_keyboard_isr_is_on(const rtems_irq_connect_data*);
+extern void _IBMPC_keyboard_isr(void);
+extern rtems_boolean _IBMPC_scankey(char *); /* defined in 'inch.c' */
+extern char BSP_wait_polled_input(void);
+extern void _IBMPC_initVideo(void);
+
+static int conSetAttr(int minor, const struct termios *);
+static void isr_on(const rtems_irq_connect_data *);
+static void isr_off(const rtems_irq_connect_data *);
+static int isr_is_on(const rtems_irq_connect_data *);
+
static rtems_irq_connect_data console_isr_data = {PC_386_KEYBOARD,
_IBMPC_keyboard_isr,
- _IBMPC_keyboard_isr_on,
- _IBMPC_keyboard_isr_off,
- _IBMPC_keyboard_isr_is_on};
+ isr_on,
+ isr_off,
+ isr_is_on};
+
+static void
+isr_on(const rtems_irq_connect_data *unused)
+{
+ return;
+}
+static void
+isr_off(const rtems_irq_connect_data *unused)
+{
+ return;
+}
-extern rtems_boolean _IBMPC_scankey(char *); /* defined in 'inch.c' */
-extern char BSP_wait_polled_input(void);
-extern void _IBMPC_initVideo(void);
+static int
+isr_is_on(const rtems_irq_connect_data *irq)
+{
+ return pc386_irq_enabled_at_i8259s(irq->name);
+}
void console_reserve_resources(rtems_configuration_table *conf)
{
@@ -203,7 +221,7 @@ console_initialize(rtems_device_major_number major,
{
printk("Initialized console on port COM2 9600-8-N-1\n\n");
}
-#define PRINTK_ON_SERIAL
+#define PRINTK_ON_SERIAL
#ifdef PRINTK_ON_SERIAL
/*
* You can remove the follwoing tree lines if you want to have printk
@@ -221,9 +239,11 @@ console_initialize(rtems_device_major_number major,
static int console_open_count = 0;
-static void console_last_close()
+static int console_last_close(int major, int minor, void *arg)
{
pc386_remove_rtems_irq_handler (&console_isr_data);
+
+ return 0;
}
/*-------------------------------------------------------------------------+
@@ -294,7 +314,7 @@ console_close(rtems_device_major_number major,
}
else {
if (--console_open_count == 0) {
- console_last_close();
+ console_last_close(major, minor, arg);
}
}
@@ -474,9 +494,4 @@ BSP_output_char_function_type BSP_output_char =
BSP_polling_getchar_function_type BSP_poll_char = BSP_wait_polled_input;
-void BSP_emergency_output_init()
-{
- _IBMPC_initVideo();
-}
-