> On Jan 5, 2024, at 1:36 PM, Peter Dufault <[email protected]> wrote:
>
> I "#if 0"d out the call to "rtems_shell_term_row_column_swapped()" that
> checks for a broken "tmux" terminal. That is what sends "\033[>0q" to the
> console. I no longer see "0q" on the console but there is still a long pause
> before the command is executed.
>
> Does it make sense to check the shell's terminal for its size before
> executing every command? It could be checked once, or the check could be
> moved into its own command. Now the shell checks for the terminal size and
> if it is a "tmux" terminal before it calls every command.
>
> The escape sequence does work on gnome-terminal, so I'm not sure what causes
> the delay. I can investigate that, but question if this
> should be done in the shell.
There's a bug detecting the timeout in rtems_shell_term_wait_for(). It does
this:
int msec = 150;
while (msec-- > 0 && str[i] != '\0') {
/* Do stuff. */
if (nothing_arrived()) {
usleep(1000);
}
}
if (msec == 0) {
/* BUG when we broke from the loop due to time out msec is -1, not 0. */
}
so if nothing comes in it treats it like it found a match, and for some reason
nothing is coming in.
The "telnetd01" test I'm running doesn't set CONFIGURE_MICROSECONDS_PER_TICK so
I think the default is 10000 us. That means we call usleep(1000) 150 times
when no data arrives. If usleep() delays for one clock tick then that is 150 *
.01 or 1.5 seconds. Since the code times out twice that's three seconds.
Actually it used to timeout in 4.5 seconds before I disabled the call to
rtems_shell_term_row_column_swapped() - that function is called even when the
calls to get the lines and columns fails.
I changed the code to use VTIME of 1 (1/10 second, or 100 msec) instead of 0.
That lets TERMIOS do the character arrival timeout instead of using a delay in
a loop that resets - essentially duplicating VTIME != 0 VMIN == 0. Once I did
that it times out as I expect in .1 seconds.
I don't know WHY no characters arrive but I know why it has a long delay.
Peter
-----------------
Peter Dufault
HD Associates, Inc. Software and System Engineering
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel