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 <robdclark@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
804b1d737a
commit
641833db4a
@ -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
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user