Я смотрю Linux пример кода драйвера UART здесь
https://github.com/martinezjavier/ldd3/blob/master/tty/tiny_serial.c
Ниже приведен фрагмент кода, в котором драйвер UART отправляет данные в порт tty
static void tiny_timer(unsigned long data)
{
struct uart_port *port;
struct tty_struct *tty;
struct tty_port *tty_port;
port = (struct uart_port *)data;
if (!port)
return;
if (!port->state)
return;
tty = port->state->port.tty;
if (!tty)
return;
tty_port = tty->port;
/* add one character to the tty port */
/* this doesn't actually push the data through unless tty->low_latency is set */
tty_insert_flip_char(tty_port, TINY_DATA_CHARACTER, 0);
tty_flip_buffer_push(tty_port);
/* resubmit the timer again */
timer->expires = jiffies + DELAY_TIME;
add_timer(timer);
/* see if we have any data to transmit */
tiny_tx_chars(port);
}
Однако, глядя на код, я не совсем понимаю, как когда-либо устанавливается связь между портом UART и портом tty. Это что-то, что нужно настроить вручную в Linux?