Changeset 41d33ac in mainline


Ignore:
Timestamp:
2006-05-31T22:18:40Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e7ed9868
Parents:
018f95a
Message:

Added syscall that lets kernel regain access to keyboard.

Files:
16 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/src/amd64.c

    r018f95a r41d33ac  
    5151#include <arch/debugger.h>
    5252#include <syscall/syscall.h>
     53#include <console/console.h>
    5354
    5455
     
    186187        return 0;
    187188}
     189
     190/** Acquire console back for kernel
     191 *
     192 */
     193void arch_grab_console(void)
     194{
     195        i8042_grab();
     196}
     197/** Return console to userspace
     198 *
     199 */
     200void arch_release_console(void)
     201{
     202        i8042_release();
     203}
  • arch/ia32/src/ia32.c

    r018f95a r41d33ac  
    5555#include <proc/thread.h>
    5656#include <syscall/syscall.h>
     57#include <console/console.h>
    5758
    5859void arch_pre_mm_init(void)
     
    133134        return 0;
    134135}
     136
     137/** Acquire console back for kernel
     138 *
     139 */
     140void arch_grab_console(void)
     141{
     142        i8042_grab();
     143}
     144/** Return console to userspace
     145 *
     146 */
     147void arch_release_console(void)
     148{
     149        i8042_release();
     150}
  • arch/ia64/src/ia64.c

    r018f95a r41d33ac  
    115115        return 0;
    116116}
     117
     118/** Acquire console back for kernel
     119 *
     120 */
     121void arch_grab_console(void)
     122{
     123}
     124/** Return console to userspace
     125 *
     126 */
     127void arch_release_console(void)
     128{
     129}
  • arch/mips32/include/drivers/msim.h

    r018f95a r41d33ac  
    3838
    3939void msim_console(void);
     40void msim_kbd_release(void);
     41void msim_kbd_grab(void);
    4042
    4143#endif
  • arch/mips32/src/console.c

    r018f95a r41d33ac  
    4343        }
    4444}
     45
     46/** Acquire console back for kernel
     47 *
     48 */
     49void arch_grab_console(void)
     50{
     51        msim_kbd_grab();
     52}
     53/** Return console to userspace
     54 *
     55 */
     56void arch_release_console(void)
     57{
     58        msim_kbd_release();
     59}
  • arch/mips32/src/drivers/msim.c

    r018f95a r41d33ac  
    109109        stdout = &console;
    110110}
     111
     112static iroutine oldvector;
     113void msim_kbd_grab(void)
     114{
     115        oldvector = int_register(MSIM_KBD_IRQ, "msim_kbd", msim_interrupt);
     116}
     117void msim_kbd_release(void)
     118{
     119        int_register(MSIM_KBD_IRQ, "user_interrupt", oldvector);
     120}
  • arch/mips32/src/mips32.c

    r018f95a r41d33ac  
    172172        return 0;
    173173}
     174
  • arch/ppc32/src/ppc32.c

    r018f95a r41d33ac  
    3535#include <userspace.h>
    3636#include <proc/uarg.h>
     37#include <console/console.h>
    3738
    3839bootinfo_t bootinfo;
     
    9293                ;
    9394}
     95
     96/** Acquire console back for kernel
     97 *
     98 */
     99void arch_grab_console(void)
     100{
     101}
     102/** Return console to userspace
     103 *
     104 */
     105void arch_release_console(void)
     106{
     107}
  • arch/ppc64/src/ppc64.c

    r018f95a r41d33ac  
    3434#include <userspace.h>
    3535#include <proc/uarg.h>
     36#include <console/console.h>
    3637
    3738bootinfo_t bootinfo;
     
    9091                ;
    9192}
     93
     94/** Acquire console back for kernel
     95 *
     96 */
     97void arch_grab_console(void)
     98{
     99}
     100/** Return console to userspace
     101 *
     102 */
     103void arch_release_console(void)
     104{
     105}
  • arch/sparc64/src/sparc64.c

    r018f95a r41d33ac  
    3333#include <arch/drivers/tick.h>
    3434#include <proc/thread.h>
     35#include <console/console.h>
    3536
    3637void arch_pre_mm_init(void)
     
    7576{
    7677}
     78
     79/** Acquire console back for kernel
     80 *
     81 */
     82void arch_grab_console(void)
     83{
     84}
     85/** Return console to userspace
     86 *
     87 */
     88void arch_release_console(void)
     89{
     90}
  • genarch/include/i8042/i8042.h

    r018f95a r41d33ac  
    4747extern void i8042_init(void);
    4848extern void i8042_poll(void);
     49extern void i8042_grab(void);
     50extern void i8042_release(void);
    4951
    5052#endif
  • genarch/src/i8042/i8042.c

    r018f95a r41d33ac  
    268268static void i8042_wait(void);
    269269
    270 /** Initialize i8042. */
    271 void i8042_init(void)
    272 {
    273         int i;
    274 
    275         exc_register(VECTOR_KBD, "i8042_interrupt", (iroutine) i8042_interrupt);
     270static iroutine oldvector;
     271/** Initialize keyboard and service interrupts using kernel routine */
     272void i8042_grab(void)
     273{
     274        oldvector = exc_register(VECTOR_KBD, "i8042_interrupt", (iroutine) i8042_interrupt);
    276275        i8042_wait();
    277276        i8042_command_write(i8042_SET_COMMAND);
     
    279278        i8042_data_write(i8042_COMMAND);
    280279        i8042_wait();
     280}
     281/** Resume the former interrupt vector */
     282void i8042_release(void)
     283{
     284        if (oldvector)
     285                exc_register(VECTOR_KBD, "user_interrupt", oldvector);
     286}
     287
     288/** Initialize i8042. */
     289void i8042_init(void)
     290{
     291        int i;
     292
     293        i8042_grab();
     294        /* Prevent user from accidentaly releasing calling i8042_resume
     295         * and disabling keyboard
     296         */
     297        oldvector = NULL;
    281298
    282299        trap_virtual_enable_irqs(1<<IRQ_KBD);
  • generic/include/console/console.h

    r018f95a r41d33ac  
    4141extern void putchar(char c);
    4242
     43extern void arch_grab_console(void);
     44extern void arch_release_console(void);
     45
    4346#endif /* __CHARDEV_H__ */
  • generic/include/syscall/syscall.h

    r018f95a r41d33ac  
    5959        SYS_SYSINFO_VALID,
    6060        SYS_SYSINFO_VALUE,
     61        SYS_DEBUG_ENABLE_CONSOLE,
    6162        SYSCALL_END
    6263} syscall_t;
  • generic/src/console/cmd.c

    r018f95a r41d33ac  
    3838
    3939#include <console/cmd.h>
     40#include <console/console.h>
    4041#include <console/kconsole.h>
    4142#include <print.h>
     
    7172        .name = "exit",
    7273        .description ="Exit kconsole",
     74        .argc = 0
     75};
     76
     77static int cmd_continue(cmd_arg_t *argv);
     78static cmd_info_t continue_info = {
     79        .name = "continue",
     80        .description ="Return console back to userspace",
     81        .func = cmd_continue,
    7382        .argc = 0
    7483};
     
    333342        &call2_info,
    334343        &call3_info,
     344        &continue_info,
    335345        &cpus_info,
    336346        &desc_info,
     
    700710        return 1;
    701711}
     712
     713/** Command for returning console back to userspace.
     714 *
     715 * @param argv Ignored.
     716 *
     717 * return Always 1.
     718 */
     719int cmd_continue(cmd_arg_t *argv)
     720{
     721        arch_release_console();
     722        return 1;
     723}
  • generic/src/syscall/syscall.c

    r018f95a r41d33ac  
    4747#include <syscall/copy.h>
    4848#include <sysinfo/sysinfo.h>
     49#include <console/console.h>
    4950
    5051/** Print using kernel facility
     
    7778       
    7879        return count;
     80}
     81
     82/** Tell kernel to get keyboard/console access again */
     83static __native sys_debug_enable_console(void)
     84{
     85        arch_grab_console();
     86        return 0;
    7987}
    8088
     
    131139        /* Sysinfo syscalls */
    132140        sys_sysinfo_valid,
    133         sys_sysinfo_value
     141        sys_sysinfo_value,
     142       
     143        /* Debug calls */
     144        sys_debug_enable_console
    134145};
Note: See TracChangeset for help on using the changeset viewer.