diff --git a/defs.h b/defs.h index 2a6c47a..1adbf78 100644 --- a/defs.h +++ b/defs.h @@ -174,6 +174,7 @@ void usertrapret(void); void uartinit(void); void uartintr(void); void uartputc(int); +int uartgetc(void); // vm.c void kvminit(void); diff --git a/uart.c b/uart.c index 659c574..b6271c1 100644 --- a/uart.c +++ b/uart.c @@ -49,11 +49,15 @@ uartputc(int c) *R(0) = c; } -uint +int uartgetc(void) { - // XXX this isn't right, must check there's data in the FIFO. - return *R(0); + if(*(5) & 0x01){ + // input data is ready. + return *R(0); + } else { + return -1; + }; } void