On Sat, May 04, 2019 at 10:36:33AM +0200, Heinrich Schuchardt wrote: > In UnloadImage() we need to know if an image is already started. > > Add a field to the handle structure identifying loaded and started images. > > Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de> > --- > include/efi_loader.h | 13 +++++++++++++ > lib/efi_loader/efi_boottime.c | 2 ++ > 2 files changed, 15 insertions(+) > > diff --git a/include/efi_loader.h b/include/efi_loader.h > index 3fd9901d66..c2a449e5b6 100644 > --- a/include/efi_loader.h > +++ b/include/efi_loader.h > @@ -182,6 +182,18 @@ struct efi_handler { > struct list_head open_infos; > }; > > +/** > + * enum efi_object_type - type of EFI object > + * > + * In UnloadImage we must be able to identify if the handle relates to a > + * started image. > + */ > +enum efi_object_type { > + EFI_OBJECT_TYPE_UNDEFINED = 0, > + EFI_OBJECT_TYPE_LOADED_IMAGE, > + EFI_OBJECT_TYPE_STARTED_IMAGE, > +};
It sounds *status*, not *type*. In a separate patch, you added U_BOOT_FIRMWARE. We should distinguish status and type for future enhancement and to avoid any confusion. Thanks, -Takahiro Akashi > /** > * struct efi_object - dereferenced EFI handle > * > @@ -204,6 +216,7 @@ struct efi_object { > struct list_head link; > /* The list of protocols */ > struct list_head protocols; > + enum efi_object_type type; > }; > > /** > diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c > index 3ed08e7c37..dc444fccf6 100644 > --- a/lib/efi_loader/efi_boottime.c > +++ b/lib/efi_loader/efi_boottime.c > @@ -1554,6 +1554,7 @@ efi_status_t efi_setup_loaded_image(struct > efi_device_path *device_path, > free(info); > return EFI_OUT_OF_RESOURCES; > } > + obj->header.type = EFI_OBJECT_TYPE_LOADED_IMAGE; > > /* Add internal object to object list */ > efi_add_handle(&obj->header); > @@ -2678,6 +2679,7 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t > image_handle, > } > > current_image = image_handle; > + image_obj->header.type = EFI_OBJECT_TYPE_STARTED_IMAGE; > EFI_PRINT("Jumping into 0x%p\n", image_obj->entry); > ret = EFI_CALL(image_obj->entry(image_handle, &systab)); > > -- > 2.20.1 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot