summaryrefslogtreecommitdiff
path: root/kernel/uart.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/uart.c')
-rw-r--r--kernel/uart.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/kernel/uart.c b/kernel/uart.c
index af571b1..e3b3b8a 100644
--- a/kernel/uart.c
+++ b/kernel/uart.c
@@ -92,22 +92,18 @@ uartputc(int c)
for(;;)
;
}
-
- while(1){
- if(uart_tx_w == uart_tx_r + UART_TX_BUF_SIZE){
- // buffer is full.
- // wait for uartstart() to open up space in the buffer.
- sleep(&uart_tx_r, &uart_tx_lock);
- } else {
- uart_tx_buf[uart_tx_w % UART_TX_BUF_SIZE] = c;
- uart_tx_w += 1;
- uartstart();
- release(&uart_tx_lock);
- return;
- }
+ while(uart_tx_w == uart_tx_r + UART_TX_BUF_SIZE){
+ // buffer is full.
+ // wait for uartstart() to open up space in the buffer.
+ sleep(&uart_tx_r, &uart_tx_lock);
}
+ uart_tx_buf[uart_tx_w % UART_TX_BUF_SIZE] = c;
+ uart_tx_w += 1;
+ uartstart();
+ release(&uart_tx_lock);
}
+
// alternate version of uartputc() that doesn't
// use interrupts, for use by kernel printf() and
// to echo characters. it spins waiting for the uart's