efi: Create the grub_efi_close_protocol() library function

Create a library function for CloseProtocol() and use it for the SNP driver.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Heinrich Schuchardt 2021-11-29 16:00:29 +01:00 committed by Daniel Kiper
parent efd9406e12
commit d0219bffc7
3 changed files with 12 additions and 6 deletions

View File

@ -117,6 +117,14 @@ grub_efi_open_protocol (grub_efi_handle_t handle,
return interface;
}
grub_efi_status_t
grub_efi_close_protocol (grub_efi_handle_t handle, grub_efi_guid_t *protocol)
{
grub_efi_boot_services_t *b = grub_efi_system_table->boot_services;
return efi_call_4 (b->close_protocol, handle, protocol, grub_efi_image_handle, NULL);
}
int
grub_efi_set_text_mode (int on)
{

View File

@ -156,9 +156,7 @@ open_card (struct grub_net_card *dev)
if (dev->efi_net != NULL)
{
efi_call_4 (grub_efi_system_table->boot_services->close_protocol,
dev->efi_handle, &net_io_guid,
grub_efi_image_handle, NULL);
grub_efi_close_protocol (dev->efi_handle, &net_io_guid);
dev->efi_net = NULL;
}
/*
@ -220,9 +218,7 @@ close_card (struct grub_net_card *dev)
{
efi_call_1 (dev->efi_net->shutdown, dev->efi_net);
efi_call_1 (dev->efi_net->stop, dev->efi_net);
efi_call_4 (grub_efi_system_table->boot_services->close_protocol,
dev->efi_handle, &net_io_guid,
grub_efi_image_handle, 0);
grub_efi_close_protocol (dev->efi_handle, &net_io_guid);
}
static struct grub_net_card_driver efidriver =

View File

@ -35,6 +35,8 @@ EXPORT_FUNC(grub_efi_locate_handle) (grub_efi_locate_search_type_t search_type,
void *EXPORT_FUNC(grub_efi_open_protocol) (grub_efi_handle_t handle,
grub_efi_guid_t *protocol,
grub_efi_uint32_t attributes);
grub_efi_status_t
EXPORT_FUNC(grub_efi_close_protocol) (grub_efi_handle_t handle, grub_efi_guid_t *protocol);
int EXPORT_FUNC(grub_efi_set_text_mode) (int on);
void EXPORT_FUNC(grub_efi_stall) (grub_efi_uintn_t microseconds);
void *