aboutsummaryrefslogtreecommitdiff
path: root/stand/efi
diff options
context:
space:
mode:
authorEmmanuel Vadot <manu@FreeBSD.org>2021-11-15 11:12:50 +0000
committerEmmanuel Vadot <manu@FreeBSD.org>2021-11-16 09:11:53 +0000
commit2e0d67c3ed7ec760b2d54f8258304b2e6359418b (patch)
treeb3e2c0f642721822d2df7101cb08712887317a57 /stand/efi
parent2bbaed4d7fcace17c619536f4119b89058ed4392 (diff)
downloadsrc-2e0d67c3ed7ec760b2d54f8258304b2e6359418b.tar.gz
src-2e0d67c3ed7ec760b2d54f8258304b2e6359418b.zip
loader: lsefi: Print more information
Printing the EFI_HANDLE pointer isn't very useful. If the handle have a IMAGE_DEVICE_PATH or a DEVICE_PATH protocol print it. This makes it easier to see which devices are present and what protocol they expose. Reviewed by: imp, tsoome Differential Revision: https://reviews.freebsd.org/D32991 Sponsored by: Beckhoff Automation GmbH & Co. KG
Diffstat (limited to 'stand/efi')
-rw-r--r--stand/efi/loader/main.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c
index d8b3b1d19b15..73936d870771 100644
--- a/stand/efi/loader/main.c
+++ b/stand/efi/loader/main.c
@@ -1402,6 +1402,30 @@ command_mode(int argc, char *argv[])
COMMAND_SET(lsefi, "lsefi", "list EFI handles", command_lsefi);
+static void
+lsefi_print_handle_info(EFI_HANDLE handle)
+{
+ EFI_DEVICE_PATH *devpath;
+ EFI_DEVICE_PATH *imagepath;
+ CHAR16 *dp_name;
+
+ imagepath = efi_lookup_image_devpath(handle);
+ if (imagepath != NULL) {
+ dp_name = efi_devpath_name(imagepath);
+ printf("Handle for image %S", dp_name);
+ efi_free_devpath_name(dp_name);
+ return;
+ }
+ devpath = efi_lookup_devpath(handle);
+ if (devpath != NULL) {
+ dp_name = efi_devpath_name(devpath);
+ printf("Handle for device %S", dp_name);
+ efi_free_devpath_name(dp_name);
+ return;
+ }
+ printf("Handle %p", handle);
+}
+
static int
command_lsefi(int argc __unused, char *argv[] __unused)
{
@@ -1437,7 +1461,7 @@ command_lsefi(int argc __unused, char *argv[] __unused)
EFI_GUID **protocols = NULL;
handle = buffer[i];
- printf("Handle %p", handle);
+ lsefi_print_handle_info(handle);
if (pager_output("\n"))
break;
/* device path */