diff options
author | Robert Morris <[email protected]> | 2020-08-28 05:51:48 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2020-08-28 09:00:41 -0400 |
commit | 490f91ab53e22d90afb1ee37d5148e341ccf538e (patch) | |
tree | 68ce72ea0b6bbb8c375e2506d9d6618f1ba8fd08 /kernel/uart.c | |
parent | 748809e1b36cd08b21ddfdf79486787cc5c85453 (diff) | |
download | xv6-labs-490f91ab53e22d90afb1ee37d5148e341ccf538e.tar.gz xv6-labs-490f91ab53e22d90afb1ee37d5148e341ccf538e.tar.bz2 xv6-labs-490f91ab53e22d90afb1ee37d5148e341ccf538e.zip |
move panicked check to uart.c
Diffstat (limited to 'kernel/uart.c')
-rw-r--r-- | kernel/uart.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/kernel/uart.c b/kernel/uart.c index daf9f04..ce89615 100644 --- a/kernel/uart.c +++ b/kernel/uart.c @@ -45,6 +45,8 @@ char uart_tx_buf[UART_TX_BUF_SIZE]; int uart_tx_w; // write next to uart_tx_buf[uart_tx_w++] int uart_tx_r; // read next from uart_tx_buf[uar_tx_r++] +extern volatile int panicked; // from printf.c + void uartstart(); void @@ -85,6 +87,12 @@ void uartputc(int c) { acquire(&uart_tx_lock); + + if(panicked){ + for(;;) + ; + } + while(1){ if(((uart_tx_w + 1) % UART_TX_BUF_SIZE) == uart_tx_r){ // buffer is full. @@ -109,6 +117,11 @@ uartputc_sync(int c) { push_off(); + if(panicked){ + for(;;) + ; + } + // wait for Transmit Holding Empty to be set in LSR. while((ReadReg(LSR) & LSR_TX_IDLE) == 0) ; |