From 641833db4a3bc417e991e7d37ce7cb99657beee0 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 24 Jul 2017 10:39:00 -0400 Subject: 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 40f6c89..f384cbb 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 * -- cgit v0.10.2