• Daniel Thompson's avatar
    kdb: Simplify code to fetch characters from console · d04213af
    Daniel Thompson authored
    Currently kdb_read_get_key() contains complex control flow that, on
    close inspection, turns out to be unnecessary. In particular:
    
    1. It is impossible to enter the branch conditioned on (escape_delay == 1)
       except when the loop enters with (escape_delay == 2) allowing us to
       combine the branches.
    
    2. Most of the code conditioned on (escape_delay == 2) simply modifies
       local data and then breaks out of the loop causing the function to
       return escape_data[0].
    
    3. Based on #2 there is not actually any need to ever explicitly set
       escape_delay to 2 because we it is much simpler to directly return
       escape_data[0] instead.
    
    4. escape_data[0] is, for all but one exit path, known to be '\e'.
    
    Simplify the code based on these observations.
    
    There is a subtle (and harmless) change of behaviour resulting from this
    simplification: instead of letting the escape timeout after ~1998
    milliseconds we now timeout after ~2000 milliseconds
    Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
    Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
    Link: https://lore.kernel.org/r/20191025073328.643-3-daniel.thompson@linaro.org
    d04213af
kdb_io.c 20.6 KB