Simplify uartputc slightly (thanks Harry Porter)

This commit is contained in:
Frans Kaashoek 2022-08-22 19:36:11 -04:00
parent 63ef3b8c9f
commit 7086197c27

View file

@ -92,22 +92,18 @@ uartputc(int c)
for(;;) for(;;)
; ;
} }
while(uart_tx_w == uart_tx_r + UART_TX_BUF_SIZE){
while(1){
if(uart_tx_w == uart_tx_r + UART_TX_BUF_SIZE){
// buffer is full. // buffer is full.
// wait for uartstart() to open up space in the buffer. // wait for uartstart() to open up space in the buffer.
sleep(&uart_tx_r, &uart_tx_lock); sleep(&uart_tx_r, &uart_tx_lock);
} else { }
uart_tx_buf[uart_tx_w % UART_TX_BUF_SIZE] = c; uart_tx_buf[uart_tx_w % UART_TX_BUF_SIZE] = c;
uart_tx_w += 1; uart_tx_w += 1;
uartstart(); uartstart();
release(&uart_tx_lock); release(&uart_tx_lock);
return;
}
}
} }
// alternate version of uartputc() that doesn't // alternate version of uartputc() that doesn't
// use interrupts, for use by kernel printf() and // use interrupts, for use by kernel printf() and
// to echo characters. it spins waiting for the uart's // to echo characters. it spins waiting for the uart's