Simplify uartputc slightly (thanks Harry Porter)
This commit is contained in:
		
							parent
							
								
									63ef3b8c9f
								
							
						
					
					
						commit
						7086197c27
					
				
					 1 changed files with 9 additions and 13 deletions
				
			
		|  | @ -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
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Frans Kaashoek
						Frans Kaashoek