/trunk/kernel/arch/ia64/include/ski/ski.h |
---|
45,12 → 45,12 |
extern chardev_t ski_uconsole; |
extern void ski_init_console(void); |
extern void ski_set_console_sysinfo(void); |
extern void poll_keyboard(void); |
extern void ski_kbd_grab(void); |
extern void ski_kbd_release(void); |
extern void kkbdpoll(void *arg); |
#endif |
/** @} |
/trunk/kernel/arch/ia64/src/ia64.c |
---|
86,7 → 86,6 |
irq_init(INR_COUNT, INR_COUNT); |
ski_init_console(); |
it_init(); |
ski_set_console_sysinfo(); |
} |
void arch_post_cpu_init(void) |
99,7 → 98,18 |
void arch_post_smp_init(void) |
{ |
thread_t *t; |
if (config.cpu_active == 1) { |
/* |
* Create thread that polls keyboard. |
*/ |
t = thread_create(kkbdpoll, NULL, TASK, 0, "kkbdpoll"); |
if (!t) |
panic("cannot create kkbdpoll\n"); |
thread_ready(t); |
} |
} |
/** Enter userspace and never return. */ |
void userspace(uspace_arg_t *kernel_uarg) |
/trunk/kernel/arch/ia64/src/ski/ski.c |
---|
42,6 → 42,7 |
#include <ddi/device.h> |
#include <ddi/irq.h> |
#include <ipc/irq.h> |
#include <proc/thread.h> |
#include <synch/spinlock.h> |
#include <arch/asm.h> |
123,7 → 124,7 |
} |
/** Ask keyboard if a key was pressed. */ |
void poll_keyboard(void) |
static void poll_keyboard(void) |
{ |
char ch; |
static char last; |
224,16 → 225,6 |
ski_kbd_irq.claim = ski_kbd_claim; |
irq_register(&ski_kbd_irq); |
} |
/** Setup console sysinfo (i.e. Keyboard IRQ) |
* |
* Because sysinfo neads memory allocation/dealocation |
* this functions should be called separetely from init. |
* |
*/ |
void ski_set_console_sysinfo(void) |
{ |
sysinfo_set_item_val("kbd", NULL, true); |
sysinfo_set_item_val("kbd.inr", NULL, SKI_KBD_INR); |
sysinfo_set_item_val("kbd.devno", NULL, ski_kbd_devno); |
258,5 → 249,17 |
interrupts_restore(ipl); |
} |
#define POLL_INTERVAL 50000 /* 50 ms */ |
/** Kernel thread for polling keyboard. */ |
void kkbdpoll(void *arg) |
{ |
while (1) { |
poll_keyboard(); |
thread_usleep(POLL_INTERVAL); |
} |
} |
/** @} |
*/ |
/trunk/kernel/arch/ia64/src/drivers/it.c |
---|
35,7 → 35,6 |
/** Interval Timer driver. */ |
#include <arch/drivers/it.h> |
#include <arch/ski/ski.h> |
#include <arch/interrupt.h> |
#include <arch/register.h> |
#include <arch/asm.h> |
116,12 → 115,6 |
srlz_d(); /* propagate changes */ |
clock(); |
/* |
* This one is a good candidate for moving to a separate |
* kernel thread private to ski.c |
*/ |
poll_keyboard(); |
} |
/** @} |