[RFC 03/14] efi_loader: export a couple of protocol related functions

Heinrich Schuchardt
2020-03-17T07:19:33Z

On 3/17/20 3:12 AM, AKASHI Takahiro wrote:
> This is a preparatory patch.
> Those functions will be used in an implementation of UEFI firmware
> management protocol as part of my capsule update patch.
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

> ---
> include/efi_loader.h | 14 ++++++++++++++
> lib/efi_loader/efi_boottime.c | 16 ++++++++--------
> 2 files changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/include/efi_loader.h b/include/efi_loader.h
> index d4c59b54c48b..c55bade6a508 100644
> --- a/include/efi_loader.h
> +++ b/include/efi_loader.h
> @@ -456,6 +456,20 @@ efi_status_t efi_remove_all_protocols(const efi_handle_t handle);
> /* Install multiple protocol interfaces */
> efi_status_t EFIAPI efi_install_multiple_protocol_interfaces
> (efi_handle_t *handle, ...);
> +/* Get handles that support a given protocol */
> +efi_status_t EFIAPI efi_locate_handle_buffer(
> + enum efi_locate_search_type search_type,
> + const efi_guid_t *protocol, void *search_key,
> + efi_uintn_t *no_handles, efi_handle_t **buffer);
> +/* Close an previously opened protocol interface */
> +efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle,
> + const efi_guid_t *protocol,
> + efi_handle_t agent_handle,
> + efi_handle_t controller_handle);
> +/* Open a protocol interface */
> +efi_status_t EFIAPI efi_handle_protocol(efi_handle_t handle,
> + const efi_guid_t *protocol,
> + void **protocol_interface);
> /* Call this to create an event */
> efi_status_t efi_create_event(uint32_t type, efi_uintn_t notify_tpl,
> void (EFIAPI *notify_function) (
> diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
> index 1f598b357a5c..9860d5047502 100644
> --- a/lib/efi_loader/efi_boottime.c
> +++ b/lib/efi_loader/efi_boottime.c
> @@ -2106,10 +2106,10 @@ static efi_status_t EFIAPI efi_set_watchdog_timer(unsigned long timeout,
> *
> * Return: status code
> */
> -static efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle,
> - const efi_guid_t *protocol,
> - efi_handle_t agent_handle,
> - efi_handle_t controller_handle)
> +efi_status_t EFIAPI efi_close_protocol(efi_handle_t handle,
> + const efi_guid_t *protocol,
> + efi_handle_t agent_handle,
> + efi_handle_t controller_handle)
> {
> struct efi_handler *handler;
> struct efi_open_protocol_info_item *item;
> @@ -2282,7 +2282,7 @@ static efi_status_t EFIAPI efi_protocols_per_handle(
> *
> * Return: status code
> */
> -static efi_status_t EFIAPI efi_locate_handle_buffer(
> +efi_status_t EFIAPI efi_locate_handle_buffer(
> enum efi_locate_search_type search_type,
> const efi_guid_t *protocol, void *search_key,
> efi_uintn_t *no_handles, efi_handle_t **buffer)
> @@ -3182,9 +3182,9 @@ out:
> *
> * Return: status code
> */
> -static efi_status_t EFIAPI efi_handle_protocol(efi_handle_t handle,
> - const efi_guid_t *protocol,
> - void **protocol_interface)
> +efi_status_t EFIAPI efi_handle_protocol(efi_handle_t handle,
> + const efi_guid_t *protocol,
> + void **protocol_interface)
> {
> return efi_open_protocol(handle, protocol, protocol_interface, efi_root,
> NULL, EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL);
>