Exemplo n.º 1
0
irqstate_t up_irq_save(void)
{
  irqstate_t flags;

  /* Get the previous value of IE */

  flags = irq_getie();

  /* Disable interrupts and return the previous interrupt state */

  irq_setie(0);
  return flags;
}
Exemplo n.º 2
0
void uart_write(char c)
{
	unsigned int oldmask;
	
	if(irq_getie()) {
		while(tx_level == UART_RINGBUFFER_SIZE_TX);
	}
	
	oldmask = irq_getmask();
	irq_setmask(0);

	if(tx_cts) {
		tx_cts = 0;
		uart_rxtx_write(c);
	} else {
		tx_buf[tx_produce] = c;
		tx_produce = (tx_produce + 1) & UART_RINGBUFFER_MASK_TX;
		tx_level++;
	}
	irq_setmask(oldmask);
}