diff options
Diffstat (limited to 'kern/console.c')
-rw-r--r-- | kern/console.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/kern/console.c b/kern/console.c index e8c0c28a..d7104e47 100644 --- a/kern/console.c +++ b/kern/console.c @@ -136,17 +136,24 @@ console_register(struct console *console) } void -console_intr(struct console *console, char c) +console_intr(struct console *console, const char *s) { assert(!cpu_intr_enabled()); + if (*s == '\0') { + return; + } + spinlock_lock(&console->lock); - if (cbuf_size(&console->recvbuf) == cbuf_capacity(&console->recvbuf)) { - goto out; - } + while (*s != '\0') { + if (cbuf_size(&console->recvbuf) == cbuf_capacity(&console->recvbuf)) { + goto out; + } - cbuf_push(&console->recvbuf, c); + cbuf_push(&console->recvbuf, *s); + s++; + } if ((console->waiter != NULL) && (console->waiter != thread_self())) { thread_wakeup(console->waiter); |