Changeset 516ff92 in mainline for kernel/generic
- Timestamp:
- 2009-01-31T21:27:18Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4863e50b
- Parents:
- 96a2e45
- Location:
- kernel/generic
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/console/chardev.h
r96a2e45 r516ff92 51 51 void (* resume)(struct chardev *); 52 52 /** Write character to stream. */ 53 void (* write)(struct chardev *, char c );53 void (* write)(struct chardev *, char c, bool silent); 54 54 /** Read character directly from device, assume interrupts disabled. */ 55 55 char (* read)(struct chardev *); -
kernel/generic/include/console/console.h
r96a2e45 r516ff92 50 50 extern void putchar(char c); 51 51 52 extern void grab_console(void); 53 extern void release_console(void); 54 52 55 extern void arch_grab_console(void); 53 56 extern void arch_release_console(void); -
kernel/generic/include/syscall/syscall.h
r96a2e45 r516ff92 80 80 81 81 SYS_DEBUG_ENABLE_CONSOLE, 82 SYS_DEBUG_DISABLE_CONSOLE, 82 83 SYS_IPC_CONNECT_KBOX, 83 84 SYSCALL_END -
kernel/generic/src/console/cmd.c
r96a2e45 r516ff92 977 977 { 978 978 printf("The kernel will now relinquish the console.\n"); 979 arch_release_console();979 release_console(); 980 980 981 981 if ((kconsole_notify) && (kconsole_irq.notif_cfg.notify)) -
kernel/generic/src/console/console.c
r96a2e45 r516ff92 66 66 static size_t klog_uspace = 0; 67 67 68 /**< Silent output */ 69 static bool silent = false; 70 68 71 /**< Kernel log spinlock */ 69 72 SPINLOCK_INITIALIZE(klog_lock); … … 71 74 /** Physical memory area used for klog buffer */ 72 75 static parea_t klog_parea; 73 76 74 77 /* 75 78 * For now, we use 0 as INR. … … 143 146 klog_inited = true; 144 147 spinlock_unlock(&klog_lock); 148 } 149 150 void grab_console(void) 151 { 152 silent = false; 153 arch_grab_console(); 154 } 155 156 void release_console(void) 157 { 158 silent = true; 159 arch_release_console(); 145 160 } 146 161 … … 200 215 index_t index = 0; 201 216 char ch; 202 217 203 218 while (index < buflen) { 204 219 ch = _getc(chardev); … … 214 229 } 215 230 putchar(ch); 216 231 217 232 if (ch == '\n') { /* end of string => write 0, return */ 218 233 buf[index] = '\0'; … … 254 269 index_t i; 255 270 for (i = klog_len - klog_stored; i < klog_len; i++) 256 stdout->op->write(stdout, klog[(klog_start + i) % KLOG_SIZE] );271 stdout->op->write(stdout, klog[(klog_start + i) % KLOG_SIZE], silent); 257 272 klog_stored = 0; 258 273 } … … 266 281 267 282 if (stdout->op->write) 268 stdout->op->write(stdout, c );283 stdout->op->write(stdout, c, silent); 269 284 else { 270 285 /* The character is just in the kernel log */ -
kernel/generic/src/syscall/syscall.c
r96a2e45 r516ff92 93 93 { 94 94 #ifdef CONFIG_KCONSOLE 95 arch_grab_console();95 grab_console(); 96 96 return true; 97 97 #else 98 98 return false; 99 99 #endif 100 } 101 102 /** Tell kernel to relinquish keyboard/console access */ 103 static unative_t sys_debug_disable_console(void) 104 { 105 release_console(); 106 return true; 100 107 } 101 108 … … 185 192 /* Debug calls */ 186 193 (syshandler_t) sys_debug_enable_console, 187 194 (syshandler_t) sys_debug_disable_console, 195 188 196 (syshandler_t) sys_ipc_connect_kbox 189 197 };
Note:
See TracChangeset
for help on using the changeset viewer.