diff options
author | Robert Morris <[email protected]> | 2020-07-20 06:59:26 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2020-07-20 06:59:26 -0400 |
commit | 823864099d0d8def9d4bcf9e382cf42e05bd7afa (patch) | |
tree | 51f344b42031f0a5a41fcf08d00694bb13f10997 /kernel/console.c | |
parent | 3b053f5d58b4914c6389588ad4e556bc887bc99d (diff) | |
download | xv6-labs-823864099d0d8def9d4bcf9e382cf42e05bd7afa.tar.gz xv6-labs-823864099d0d8def9d4bcf9e382cf42e05bd7afa.tar.bz2 xv6-labs-823864099d0d8def9d4bcf9e382cf42e05bd7afa.zip |
interrupt-driven uart output, hopefully a nice example for teaching.
Diffstat (limited to 'kernel/console.c')
-rw-r--r-- | kernel/console.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/console.c b/kernel/console.c index 87a83ff..a97ef30 100644 --- a/kernel/console.c +++ b/kernel/console.c @@ -27,6 +27,8 @@ // // send one character to the uart. +// called by printf, and to echo input characters, +// but not from write(). // void consputc(int c) @@ -40,9 +42,9 @@ consputc(int c) if(c == BACKSPACE){ // if the user typed backspace, overwrite with a space. - uartputc('\b'); uartputc(' '); uartputc('\b'); + uartputc('\b', 0); uartputc(' ', 0); uartputc('\b', 0); } else { - uartputc(c); + uartputc(c, 0); } } @@ -70,7 +72,7 @@ consolewrite(int user_src, uint64 src, int n) char c; if(either_copyin(&c, user_src, src+i, 1) == -1) break; - consputc(c); + uartputc(c, 1); } release(&cons.lock); |