Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • early-display
  • variant-emmc-nvme-boot
  • 2023-01-25
  • v3
  • variant-emmc-nvme-boot
  • 2020-06-01
7 results

menu.c

Blame
  • Forked from Reform / reform-boundary-uboot
    Source project has a limited visibility.
    • Masahiro Yamada's avatar
      86fbad24
      menu: fix timeout duration · 86fbad24
      Masahiro Yamada authored
      For distro-boot, the TIMEOUT directive in the boot script specifies
      how long to pause in units of 1/10 sec. [1]
      
      Commit 8594753b ("menu: only timeout when menu is displayed")
      corrected this by simply dividing the timeout value by 10 in
      menu_interactive_choice().
      
      I see two problems:
      
       - For example, "TIMEOUT 5" should wait for 0.5 sec, but the current
         implementation cannot handle the granularity of 1/10 sec.
         In fact, it never breaks because "m->timeout / 10" is zero,
         which means no timeout.
      
       - The menu API is used not only by cmd/pxe.c but also by
         common/autoboot.c .  For the latter case, the unit of the
         timeout value is _second_ because its default is associated
         with CONFIG_BOOTDELAY.
      
      To fix the first issue, use DIV_ROUND_UP() so that the timeout value
      is rounded up to the closest integer.
      
      For the second issue, move the division to the boundary between
      cmd/pxe.c and common/menu.c .  This is a more desirable place because
      the comment of struct pxe_menu says:
      
       * timeout - time in tenths of a second to wait for a user key-press before
       *           booting the default label.
      
      Then, the comment of menu_create() says:
      
       * timeout - A delay in seconds to wait for user input. If 0, timeout is
       * disabled, and the default choice will be returned unless prompt is 1.
      
      [1] https://www.syslinux.org/wiki/index.php?title=SYSLINUX#TIMEOUT_timeout
      
      
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      86fbad24
      History
      menu: fix timeout duration
      Masahiro Yamada authored
      For distro-boot, the TIMEOUT directive in the boot script specifies
      how long to pause in units of 1/10 sec. [1]
      
      Commit 8594753b ("menu: only timeout when menu is displayed")
      corrected this by simply dividing the timeout value by 10 in
      menu_interactive_choice().
      
      I see two problems:
      
       - For example, "TIMEOUT 5" should wait for 0.5 sec, but the current
         implementation cannot handle the granularity of 1/10 sec.
         In fact, it never breaks because "m->timeout / 10" is zero,
         which means no timeout.
      
       - The menu API is used not only by cmd/pxe.c but also by
         common/autoboot.c .  For the latter case, the unit of the
         timeout value is _second_ because its default is associated
         with CONFIG_BOOTDELAY.
      
      To fix the first issue, use DIV_ROUND_UP() so that the timeout value
      is rounded up to the closest integer.
      
      For the second issue, move the division to the boundary between
      cmd/pxe.c and common/menu.c .  This is a more desirable place because
      the comment of struct pxe_menu says:
      
       * timeout - time in tenths of a second to wait for a user key-press before
       *           booting the default label.
      
      Then, the comment of menu_create() says:
      
       * timeout - A delay in seconds to wait for user input. If 0, timeout is
       * disabled, and the default choice will be returned unless prompt is 1.
      
      [1] https://www.syslinux.org/wiki/index.php?title=SYSLINUX#TIMEOUT_timeout
      
      
      
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>