A velocidade da porta serial normalmente é tratada pelo próprio hardware e é configurada pelo driver de hardware.
Assim, a cadeia a seguir seria a chamada TCSETS
ioctl, que chama tty_set_termios()
em tty_ioctl.c
. Se você seguiu essa cadeia até o driver RocketPort, ele chamaria rp_set_termios()
, que chama configure_r_port()
.
Isso faz um cálculo das configurações para enviar ao chip RocketPort (por exemplo, a configuração do divisor), que eventualmente chama o sSetBaud
(definido em rocket_int.h
), que simplesmente envia os bytes para o chip.
O kernel, por si só, não faz "bit banging" das linhas seriais para determinar a taxa de transmissão; o chip UART faz todo esse trabalho duro para nós. Nós só precisamos programar o chip: -)