[PATCH v14 01/10] eficonfig: menu-driven addition of UEFI boot option
Ilias Apalodimas
ilias.apalodimas at linaro.org
Tue Aug 30 14:56:43 CEST 2022
On Tue, 30 Aug 2022 at 14:53, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Kojima-san,
>
> [...]
> > +/**
> > + * eficonfig_choice_entry() - user key input handler
> > + *
> > + * @data: pointer to the efimenu structure
> > + * Return: key string to identify the selected entry
> > + */
> > +static char *eficonfig_choice_entry(void *data)
> > +{
> > + int esc = 0;
> > + struct list_head *pos, *n;
> > + struct eficonfig_entry *entry;
> > + enum bootmenu_key key = KEY_NONE;
> > + struct efimenu *efi_menu = data;
> > +
> > + while (1) {
> > + bootmenu_loop((struct bootmenu_data *)efi_menu, &key, &esc);
> > +
> > + switch (key) {
> > + case KEY_UP:
> > + if (efi_menu->active > 0)
> > + --efi_menu->active;
> > + /* no menu key selected, regenerate menu */
> > + return NULL;
> > + case KEY_DOWN:
> > + if (efi_menu->active < efi_menu->count - 1)
> > + ++efi_menu->active;
> > + /* no menu key selected, regenerate menu */
> > + return NULL;
> > + case KEY_SELECT:
> > + list_for_each_safe(pos, n, &efi_menu->list) {
> > + entry = list_entry(pos, struct eficonfig_entry, list);
> > + if (entry->num == efi_menu->active)
> > + return entry->key;
> > + }
> > + break;
> > + case KEY_QUIT:
> > + /* Quit by choosing the last entry */
> > + entry = list_last_entry(&efi_menu->list, struct eficonfig_entry, list);
> > + return entry->key;
> > + default:
> > + /* Pressed key is not valid, no need to regenerate the menu */
>
> Even with this comment I am still not sure I am following.
> The function definition is a char *. There are cases ('default' and
> 'KEY_SELECT') which have no return value at all.
> Shouldn't there be a 'return NULL' in the end of the function, even if
> that's not supposed to happen?
nvm, I missed the while(1) loop at the beginning. This is fine
Cheers
/Ilias
>
> [...]
>
> Thanks
> /Ilias
>
More information about the U-Boot
mailing list