[PATCH 01/12] efi: add function to determine type of device path

Lucas Stach l.stach at pengutronix.de
Mon Dec 8 05:42:28 PST 2014


Thanks to the wonders of UEFI we have to walk down the
device path all the way until we arrive at the device
we got this path from...

Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
---
 common/efi-devicepath.c | 15 +++++++++++++++
 include/efi.h           |  1 +
 2 files changed, 16 insertions(+)

diff --git a/common/efi-devicepath.c b/common/efi-devicepath.c
index 2b1d916768d0..a53c6d2e8b9b 100644
--- a/common/efi-devicepath.c
+++ b/common/efi-devicepath.c
@@ -1368,3 +1368,18 @@ char *device_path_to_str(struct efi_device_path *dev_path)
 
 	return str.str;
 }
+
+u8 device_path_to_type(struct efi_device_path *dev_path)
+{
+	struct efi_device_path *dev_path_next;
+
+	dev_path = unpack_device_path(dev_path);
+	dev_path_next = next_device_path_node(dev_path);
+
+	while (!is_device_path_end(dev_path_next)) {
+		dev_path = dev_path_next;
+		dev_path_next = next_device_path_node(dev_path);
+	}
+
+	return device_path_type(dev_path);
+}
diff --git a/include/efi.h b/include/efi.h
index 4ad9f69237e7..de51e1a3c9b6 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -615,6 +615,7 @@ static inline int efi_compare_guid(efi_guid_t *a, efi_guid_t *b)
 }
 
 char *device_path_to_str(struct efi_device_path *dev_path);
+u8 device_path_to_type(struct efi_device_path *dev_path);
 
 const char *efi_guid_string(efi_guid_t *g);
 
-- 
2.1.3




More information about the barebox mailing list