mirror of
https://github.com/ipxe/ipxe
synced 2025-12-23 13:30:57 +03:00
[efi] Define an interface operation to describe using an EFI device path
Allow arbitrary objects to support describing themselves using an EFI device path. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -55,3 +55,29 @@ size_t efi_path_len ( EFI_DEVICE_PATH_PROTOCOL *path ) {
|
||||
|
||||
return ( ( ( void * ) end ) - ( ( void * ) path ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Describe object as an EFI device path
|
||||
*
|
||||
* @v intf Interface
|
||||
* @ret path EFI device path, or NULL
|
||||
*
|
||||
* The caller is responsible for eventually calling free() on the
|
||||
* allocated device path.
|
||||
*/
|
||||
EFI_DEVICE_PATH_PROTOCOL * efi_describe ( struct interface *intf ) {
|
||||
struct interface *dest;
|
||||
efi_describe_TYPE ( void * ) *op =
|
||||
intf_get_dest_op ( intf, efi_describe, &dest );
|
||||
void *object = intf_object ( dest );
|
||||
EFI_DEVICE_PATH_PROTOCOL *path;
|
||||
|
||||
if ( op ) {
|
||||
path = op ( object );
|
||||
} else {
|
||||
path = NULL;
|
||||
}
|
||||
|
||||
intf_put ( dest );
|
||||
return path;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user