summaryrefslogtreecommitdiff
path: root/src/kernel/arch/i386/tty/serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/arch/i386/tty/serial.c')
-rw-r--r--src/kernel/arch/i386/tty/serial.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/kernel/arch/i386/tty/serial.c b/src/kernel/arch/i386/tty/serial.c
index f9bb252..e77ff5c 100644
--- a/src/kernel/arch/i386/tty/serial.c
+++ b/src/kernel/arch/i386/tty/serial.c
@@ -35,9 +35,11 @@ static void serial_putchar(char c) {
port_out8(COM1, c);
}
-char serial_read(void) {
- while ((port_in8(COM1 + 5) & 0x01) == 0); // wait for DR
- return port_in8(COM1);
+bool serial_poll_read(char *c) {
+ if ((port_in8(COM1 + 5) & 0x01) == 0) // needs DR
+ return false;
+ *c = port_in8(COM1);
+ return true;
}
void serial_write(const char *buf, size_t len) {