From: Rob Clark Date: Mon, 24 Jul 2017 14:39:00 +0000 (-0400) Subject: efi_loader: add helper macro to construct protocol objects X-Git-Tag: v2017.09-rc1~13^2~11 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=641833db4a3bc417e991e7d37ce7cb99657beee0;p=u-boot efi_loader: add helper macro to construct protocol objects There are a bunch of protocols which should be exposed by GUID but are not. Add a helper macro to create an efi_object, to avoid much typing. Note that using the pointer for efiobj->handle is semi-arbitrary. We just need a unique value to match the efiobj supporting the protocol with the handle that LocateHandle() returns.. See LibLocateProtocol() in gnu-efi. It does LocateHandle() to find all the handles, and then loops over them calling HandleProtocol() with the GUID of the protocol it is trying to find. Signed-off-by: Rob Clark Signed-off-by: Alexander Graf --- diff --git a/include/efi_loader.h b/include/efi_loader.h index 40f6c89e65..f384cbbe77 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -66,6 +66,14 @@ struct efi_object { void *handle; }; +#define EFI_PROTOCOL_OBJECT(_guid, _protocol) (struct efi_object){ \ + .protocols = {{ \ + .guid = &(_guid), \ + .protocol_interface = (void *)(_protocol), \ + }}, \ + .handle = (void *)(_protocol), \ +} + /** * struct efi_event *