Use write() in parlib/debug.c
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 23 Mar 2016 22:05:51 +0000 (18:05 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 31 Mar 2016 20:53:42 +0000 (16:53 -0400)
This is the printf that gets called from vcore context.  We want those
prints to go to wherever stdout is, instead of always to the kernel
directly.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/debug.c

index 204cca4..6d2bbfe 100644 (file)
@@ -1,5 +1,5 @@
 // Implementation of cprintf console output for user processes,
-// based on printfmt() and the sys_cputs() system call.
+// based on printfmt() and the write() system call.
 //
 // cprintf is a debugging statement, not a generic output statement.
 // It is very important that it always go to the console, especially when
@@ -8,6 +8,7 @@
 #include <parlib/common.h>
 #include <parlib/parlib.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <parlib/spinlock.h>
 
 // Collect up to BUF_SIZE characters into a buffer
@@ -27,7 +28,7 @@ static void putch(int ch, debugbuf_t **b)
 {
        (*b)->buf[(*b)->idx++] = ch;
        if ((*b)->idx == BUF_SIZE) {
-               sys_cputs((*b)->buf, (*b)->idx);
+               write(1, (*b)->buf, (*b)->idx);
                (*b)->idx = 0;
        }
        (*b)->cnt++;
@@ -41,7 +42,7 @@ int akaros_vprintf(const char *fmt, va_list ap)
        b.idx = 0;
        b.cnt = 0;
        akaros_vprintfmt((void*)putch, (void*)&bp, fmt, ap);
-       sys_cputs(b.buf, b.idx);
+       write(1, b.buf, b.idx);
 
        return b.cnt;
 }