[U-Boot] [PATCH 06/23] efi_loader: new function efi_search_protocol

Simon Glass sjg at chromium.org
Thu Aug 31 12:51:26 UTC 2017


On 27 August 2017 at 06:51, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
> In multiple functions we are searching for the protocol of a handle.
> This patch provides a new function efi_search_protocol that we can
> use to avoid duplicating code.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
>  lib/efi_loader/efi_boottime.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>

>
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index b643d299b9..9dae02daca 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -453,6 +453,31 @@ static efi_status_t EFIAPI efi_check_event(struct efi_event *event)
>         return EFI_EXIT(EFI_INVALID_PARAMETER);
>  }
>
> +static efi_status_t efi_search_protocol(void *handle, efi_guid_t *protocol_guid,
> +                                       struct efi_handler **handler)

Needs a function comment

> +{
> +       struct efi_object *efiobj;
> +       size_t i;
> +       struct efi_handler *protocol;
> +
> +       if (!handle || !protocol_guid)
> +               return EFI_INVALID_PARAMETER;
> +       efiobj = efi_search_obj(handle);
> +       if (!efiobj)
> +               return EFI_INVALID_PARAMETER;
> +       for (i = 0; i < ARRAY_SIZE(efiobj->protocols); i++) {
> +               protocol = &efiobj->protocols[i];
> +               if (!protocol->guid)
> +                       continue;
> +               if (!guidcmp(protocol->guid, protocol_guid)) {
> +                       if (handler)
> +                               *handler = protocol;
> +                       return EFI_SUCCESS;
> +               }
> +       }
> +       return EFI_NOT_FOUND;
> +}
> +
>  static efi_status_t EFIAPI efi_install_protocol_interface(void **handle,
>                         efi_guid_t *protocol, int protocol_interface_type,
>                         void *protocol_interface)
> --
> 2.14.1
>


More information about the U-Boot mailing list