Preciso de ajuda para encontrar um patch de kernel para obter um VTIME da API tty termios inferior a 100 ms, a fim de diminuir o intervalo entre caracteres. Ele bloqueia a leitura do syscall até o tempo limite do VTIME.
A função n_tty_read() é o ponto de entrada do patch: https://elixir.bootlin.com/linux/latest/source/drivers/tty/n_tty.c#L2131
Existe alguém para me aconselhar? Tenho que usar o modo não canônico (sem protocolo de enquadramento, sem ASCII, sem interrupção). E o parâmetro VMIN é nulo porque todos os comprimentos das mensagens são variáveis. A solução para pesquisar cada caractere é muito cara com um sistema uart múltiplo e implica múltiplas mudanças de contexto de processo.
Extraia o manual dos termios: VTIME Timeout em decisegundos para leitura não canônica (TIME). https://man7.org/linux/man-pages/man3/termios.3.html
É necessário um patch do kernel Linux... É melhor dividir HZ por um valor maior? Ou definir o HZ global para um valor menor?
A API serial do Microsoft Windows é capaz de configurar até 1 ms, mas não o Linux. Portanto, o Windows é melhor para processamento bruto de porta serial. ReadIntervalTimeout : https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddser/ns-ntddser-_serial_timeouts
Extrato de comentário "em modo não canônico ... aceita apenas 4095 caracteres ", acho que o problema está aqui, talvez seja por isso que a fila read_wait não foi ativada.
https://elixir.bootlin.com/linux/latest/source/drivers/tty/n_tty.c#L1667