mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 21:21:37 +00:00
efi_loader: allow creating new handles
In efi_install_protocol_interface support creating a new handle. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Rob Clark <robdclark@gmail.com> Reviewed-by: Rob Clark <robdclark@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
842a8e434e
commit
3cc6e3fe95
1 changed files with 20 additions and 2 deletions
|
@ -266,6 +266,23 @@ static efi_status_t EFIAPI efi_free_pool_ext(void *buffer)
|
||||||
return EFI_EXIT(r);
|
return EFI_EXIT(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static efi_status_t efi_create_handle(void **handle)
|
||||||
|
{
|
||||||
|
struct efi_object *obj;
|
||||||
|
efi_status_t r;
|
||||||
|
|
||||||
|
r = efi_allocate_pool(EFI_ALLOCATE_ANY_PAGES,
|
||||||
|
sizeof(struct efi_object),
|
||||||
|
(void **)&obj);
|
||||||
|
if (r != EFI_SUCCESS)
|
||||||
|
return r;
|
||||||
|
memset(obj, 0, sizeof(struct efi_object));
|
||||||
|
obj->handle = obj;
|
||||||
|
list_add_tail(&obj->link, &efi_obj_list);
|
||||||
|
*handle = obj;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Our event capabilities are very limited. Only a small limited
|
* Our event capabilities are very limited. Only a small limited
|
||||||
* number of events is allowed to coexist.
|
* number of events is allowed to coexist.
|
||||||
|
@ -520,8 +537,9 @@ static efi_status_t EFIAPI efi_install_protocol_interface(void **handle,
|
||||||
|
|
||||||
/* Create new handle if requested. */
|
/* Create new handle if requested. */
|
||||||
if (!*handle) {
|
if (!*handle) {
|
||||||
r = EFI_OUT_OF_RESOURCES;
|
r = efi_create_handle(handle);
|
||||||
goto out;
|
if (r != EFI_SUCCESS)
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
/* Find object. */
|
/* Find object. */
|
||||||
list_for_each(lhandle, &efi_obj_list) {
|
list_for_each(lhandle, &efi_obj_list) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue