コード例 #1
0
ファイル: uartDriver.c プロジェクト: pratesh/ModBus-Driver
static irqreturn_t uart_rxint(int irq, void *dev_id)
//  interrupt handler or interrupt service routine (ISR)
// read this - http://www.makelinux.net/books/lkd2/?u=ch06lev1sec3
// static irqreturn_t intr_handler(int irq, void *dev_id, struct pt_regs *regs) 
{
  struct uart_port *port = (struct uart_port *) dev_id;
  struct tty_struct *tty = port->state->port.tty;
  // What is the use of this ? 

  unsigned int status, data;
  /* ... */
  do {
    /* ... */
    /* Read data */
    data   = uart_getc(port);
    /* Normal, overrun, parity, frame error? */
    status = uart_status(port);
    /* Dispatch to the tty layer */
    tty_insert_flip_char(tty, data, status);
    /* ... */
  } while (more_chars_to_be_read()); /* More chars */
  /* ... */
  tty_flip_buffer_push(tty);

  return IRQ_HANDLED;
}
コード例 #2
0
ファイル: uart.c プロジェクト: efanov/linux-device-driver
irqreturn_t usb_uart_rxint(int irq, void *dev_id)
{
	unsigned int data, status;
	struct uart_port *port = (struct uart_port*)dev_id;
	struct tty_struct *tty = port->state->port.tty;
	do {
		data = usb_uart_getc(port);
		status = usb_uart_status(port);
		tty_insert_flip_char(tty, data, status);
	} while(more_chars_to_be_read());
	return IRQ_HANDLED;
}