Kernel messages infrastructure
[akaros.git] / kern / arch / sparc / console.c
index 37c1ff7..3350158 100644 (file)
@@ -1,4 +1,5 @@
-#include <arch/frontend.h>
+#include <frontend.h>
+#include <pmap.h>
 
 void
 cons_init(void)
@@ -10,7 +11,7 @@ cons_init(void)
 void
 cputbuf(const char*COUNT(len) buf, int len)
 {
-       frontend_syscall(RAMP_SYSCALL_write,1,buf,len);
+       frontend_syscall(0,APPSERVER_SYSCALL_write,1,PADDR((int32_t)buf),len,0,0);
 }
 
 // Low-level console I/O
@@ -18,7 +19,7 @@ cputbuf(const char*COUNT(len) buf, int len)
 inline void
 cons_putc(int c)
 {
-       if(c == '\b')
+       if(c == '\b' || c == 0x7F)
        {
                char buf[3] = {'\b', ' ', '\b'};
                cputbuf(buf,3);
@@ -30,17 +31,24 @@ cons_putc(int c)
        }
 }
 
-
 void
 cputchar(int c)
 {
-        cons_putc(c);
+       char ch = c;
+       cputbuf(&ch,1);
 }
 
 int
 cons_getc()
 {
-       return frontend_syscall(RAMP_SYSCALL_getch,0,0,0);
+       char ch;
+       uintptr_t paddr = PADDR((uintptr_t)&ch);
+       int32_t ret = frontend_syscall(0,APPSERVER_SYSCALL_read,0,paddr,1,0,0);
+       if(ch == 0x7F)
+               ch = '\b';
+       return ret <= 0 ? 0 : ch;
+       //int ret = sys_nbgetch();
+       //return ret < 0 ? 0 : ret;
 }
 
 int