Rev 4087 | Rev 4173 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4087 | Rev 4146 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #include <console/chardev.h> |
37 | #include <console/chardev.h> |
38 | #include <sysinfo/sysinfo.h> |
38 | #include <sysinfo/sysinfo.h> |
39 | #include <synch/waitq.h> |
39 | #include <synch/waitq.h> |
40 | #include <synch/spinlock.h> |
40 | #include <synch/spinlock.h> |
41 | #include <arch/types.h> |
41 | #include <arch/types.h> |
42 | #include <ddi/device.h> |
- | |
43 | #include <ddi/irq.h> |
42 | #include <ddi/irq.h> |
44 | #include <ddi/ddi.h> |
43 | #include <ddi/ddi.h> |
45 | #include <ipc/irq.h> |
44 | #include <ipc/irq.h> |
46 | #include <arch.h> |
45 | #include <arch.h> |
47 | #include <func.h> |
46 | #include <func.h> |
48 | #include <print.h> |
47 | #include <print.h> |
49 | #include <atomic.h> |
48 | #include <atomic.h> |
- | 49 | #include <syscall/copy.h> |
|
- | 50 | #include <errno.h> |
|
50 | 51 | ||
51 | #define KLOG_SIZE PAGE_SIZE |
52 | #define KLOG_SIZE PAGE_SIZE |
52 | #define KLOG_LATENCY 8 |
53 | #define KLOG_LATENCY 8 |
53 | 54 | ||
54 | /** Kernel log cyclic buffer */ |
55 | /** Kernel log cyclic buffer */ |
Line 120... | Line 121... | ||
120 | { |
121 | { |
121 | silent = true; |
122 | silent = true; |
122 | arch_release_console(); |
123 | arch_release_console(); |
123 | } |
124 | } |
124 | 125 | ||
- | 126 | /** Tell kernel to get keyboard/console access again */ |
|
- | 127 | unative_t sys_debug_enable_console(void) |
|
- | 128 | { |
|
- | 129 | #ifdef CONFIG_KCONSOLE |
|
- | 130 | grab_console(); |
|
- | 131 | return true; |
|
- | 132 | #else |
|
- | 133 | return false; |
|
- | 134 | #endif |
|
- | 135 | } |
|
- | 136 | ||
- | 137 | /** Tell kernel to relinquish keyboard/console access */ |
|
- | 138 | unative_t sys_debug_disable_console(void) |
|
- | 139 | { |
|
- | 140 | release_console(); |
|
- | 141 | return true; |
|
- | 142 | } |
|
- | 143 | ||
125 | bool check_poll(indev_t *indev) |
144 | bool check_poll(indev_t *indev) |
126 | { |
145 | { |
127 | if (indev == NULL) |
146 | if (indev == NULL) |
128 | return false; |
147 | return false; |
129 | 148 | ||
Line 273... | Line 292... | ||
273 | 292 | ||
274 | if (update) |
293 | if (update) |
275 | klog_update(); |
294 | klog_update(); |
276 | } |
295 | } |
277 | 296 | ||
- | 297 | /** Print using kernel facility |
|
- | 298 | * |
|
- | 299 | * Print to kernel log. |
|
- | 300 | * |
|
- | 301 | */ |
|
- | 302 | unative_t sys_klog(int fd, const void * buf, size_t count) |
|
- | 303 | { |
|
- | 304 | char *data; |
|
- | 305 | int rc; |
|
- | 306 | ||
- | 307 | if (count > PAGE_SIZE) |
|
- | 308 | return ELIMIT; |
|
- | 309 | ||
- | 310 | if (count > 0) { |
|
- | 311 | data = (char *) malloc(count + 1, 0); |
|
- | 312 | if (!data) |
|
- | 313 | return ENOMEM; |
|
- | 314 | ||
- | 315 | rc = copy_from_uspace(data, buf, count); |
|
- | 316 | if (rc) { |
|
- | 317 | free(data); |
|
- | 318 | return rc; |
|
- | 319 | } |
|
- | 320 | data[count] = 0; |
|
- | 321 | ||
- | 322 | printf("%s", data); |
|
- | 323 | free(data); |
|
- | 324 | } else |
|
- | 325 | klog_update(); |
|
- | 326 | ||
- | 327 | return count; |
|
- | 328 | } |
|
- | 329 | ||
278 | /** @} |
330 | /** @} |
279 | */ |
331 | */ |