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;
|
void *handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define EFI_PROTOCOL_OBJECT(_guid, _protocol) (struct efi_object){ \
|
||||||
|
.protocols = {{ \
|
||||||
|
.guid = &(_guid), \
|
||||||
|
.protocol_interface = (void *)(_protocol), \
|
||||||
|
}}, \
|
||||||
|
.handle = (void *)(_protocol), \
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct efi_event
|
* struct efi_event
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user