Changeset 2677758 in mainline
- Timestamp:
- 2005-11-22T23:44:38Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 607c5f9
- Parents:
- a7fdfe1
- Files:
-
- 6 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
ra7fdfe1 r2677758 94 94 95 95 GENERIC_SOURCES = \ 96 generic/src/console/chardev.c \ 97 generic/src/console/console.c \ 96 98 generic/src/cpu/cpu.c \ 97 99 generic/src/main/main.c \ 100 generic/src/main/kconsole.c \ 98 101 generic/src/main/kinit.c \ 99 102 generic/src/main/uinit.c \ -
arch/mips32/src/drivers/keyboard.c
ra7fdfe1 r2677758 1 1 /* 2 * Copyright (C) 2003 Josef Cejka 2 3 * Copyright (C) 2005 Jakub Jermar 3 4 * All rights reserved. … … 28 29 29 30 #include <arch/drivers/keyboard.h> 31 #include <console/chardev.h> 32 #include <console/console.h> 30 33 #include <arch/cp0.h> 31 34 #include <putchar.h> 35 #include <synch/spinlock.h> 36 #include <synch/waitq.h> 37 #include <typedefs.h> 32 38 39 static chardev_t kbrd; 40 41 static void keyboard_enable(void); 42 43 /** Initialize keyboard subsystem. */ 33 44 void keyboard_init(void) 34 45 { 35 /* unmask keyboard interrupt */ 46 cp0_unmask_int(KEYBOARD_IRQ); 47 chardev_initialize(&kbrd, keyboard_enable); 48 stdin = &kbrd; 49 } 50 51 /** Process keyboard interrupt. 52 * 53 * This function is called directly from the interrupt handler. 54 * It feeds the keyboard buffer with characters read. When the buffer 55 * is full, it simply masks the keyboard interrupt signal. 56 */ 57 void keyboard(void) 58 { 59 char ch; 60 61 spinlock_lock(&kbrd.lock); 62 kbrd.counter++; 63 if (kbrd.counter == CHARDEV_BUFLEN - 1) { 64 /* buffer full => disable keyboard interrupt */ 65 cp0_mask_int(KEYBOARD_IRQ); 66 } 67 68 ch = *((char *) KEYBOARD_ADDRESS); 69 putchar(ch); 70 kbrd.buffer[kbrd.index++] = ch; 71 kbrd.index = kbrd.index % CHARDEV_BUFLEN; /* index modulo size of buffer */ 72 waitq_wakeup(&kbrd.wq, WAKEUP_FIRST); 73 spinlock_unlock(&kbrd.lock); 74 } 75 76 /* Called from getc(). */ 77 void keyboard_enable(void) 78 { 36 79 cp0_unmask_int(KEYBOARD_IRQ); 37 80 } 38 39 void keyboard(void)40 {41 putchar(*((char *) KEYBOARD_ADDRESS));42 } -
arch/mips32/src/mips32.c
ra7fdfe1 r2677758 38 38 #include <arch/interrupt.h> 39 39 #include <arch/drivers/arc.h> 40 #include <arch/drivers/keyboard.h> 40 41 #include <proc/thread.h> 41 42 #include <print.h> … … 83 84 84 85 console_init(); 86 keyboard_init(); 85 87 arc_print_memory_map(); 86 88 arc_print_devices(); -
generic/include/typedefs.h
ra7fdfe1 r2677758 80 80 typedef struct the the_t; 81 81 82 typedef struct chardev chardev_t; 83 82 84 #endif -
generic/src/main/kinit.c
ra7fdfe1 r2677758 27 27 */ 28 28 29 #include <main/kinit.h> 30 #include <main/kconsole.h> 31 #include <main/uinit.h> 29 32 #include <config.h> 30 33 #include <arch.h> 31 #include <main/kinit.h>32 #include <main/uinit.h>33 34 #include <proc/scheduler.h> 34 35 #include <proc/task.h> … … 83 84 waitq_sleep(&kmp_completion_wq); 84 85 } 85 else panic("thread_create/kmp ");86 else panic("thread_create/kmp\n"); 86 87 } 87 88 #endif /* CONFIG_SMP */ … … 110 111 thread_ready(t); 111 112 } 112 else panic("thread_create/kcpulb ");113 else panic("thread_create/kcpulb\n"); 113 114 114 115 } 115 116 } 116 117 #endif /* CONFIG_SMP */ 118 119 /* 120 * Create kernel console. 121 */ 122 if (t = thread_create(kconsole, NULL, TASK, 0)) 123 thread_ready(t); 124 else panic("thread_create/kconsole\n"); 117 125 118 126 interrupts_enable(); … … 124 132 m = vm_create(NULL); 125 133 if (!m) 126 panic("vm_create ");134 panic("vm_create\n"); 127 135 u = task_create(m); 128 136 if (!u) 129 panic("task_create ");137 panic("task_create\n"); 130 138 t = thread_create(uinit, NULL, u, THREAD_USER_STACK); 131 139 if (!t) 132 panic("thread_create ");140 panic("thread_create\n"); 133 141 134 142 /* … … 137 145 a = vm_area_create(m, VMA_TEXT, 1, UTEXT_ADDRESS); 138 146 if (!a) 139 panic("vm_area_create: vm_text ");147 panic("vm_area_create: vm_text\n"); 140 148 vm_area_map(a, m); 141 149 memcpy((void *) PA2KA(a->mapping[0]), (void *) utext, utext_size < PAGE_SIZE ? utext_size : PAGE_SIZE); … … 146 154 a = vm_area_create(m, VMA_STACK, 1, USTACK_ADDRESS); 147 155 if (!a) 148 panic("vm_area_create: vm_stack ");156 panic("vm_area_create: vm_stack\n"); 149 157 vm_area_map(a, m); 150 158 … … 156 164 #endif /* CONFIG_TEST */ 157 165 158 159 166 while (1) { 160 167 thread_sleep(60); -
generic/src/main/main.c
ra7fdfe1 r2677758 71 71 char *revision = ""; 72 72 #endif 73 char *copyright = "Copyright (C) 2001-2005 Jakub Jermar\nCopyright (C) 2005HelenOS project";73 char *copyright = "Copyright (C) 2001-2005 HelenOS project"; 74 74 75 75 config_t config;
Note:
See TracChangeset
for help on using the changeset viewer.