Skip to content

Commit

Permalink
[efi] Include installed protocol list in unknown handle names
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Aug 27, 2015
1 parent 9501eaf commit e08d7cc
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions src/interface/efi/efi_debug.c
Expand Up @@ -35,6 +35,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <errno.h>
#include <ipxe/uuid.h>
#include <ipxe/base16.h>
#include <ipxe/vsprintf.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/efi_utils.h>
#include <ipxe/efi/Protocol/ComponentName.h>
Expand Down Expand Up @@ -632,7 +633,10 @@ static struct efi_handle_name_type efi_handle_name_types[] = {
const __attribute__ (( pure )) char * efi_handle_name ( EFI_HANDLE handle ) {
EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
struct efi_handle_name_type *type;
static char buf[32];
static char buf[256];
size_t used = 0;
EFI_GUID **protocols;
UINTN count;
unsigned int i;
void *interface;
const char *name;
Expand Down Expand Up @@ -672,7 +676,19 @@ const __attribute__ (( pure )) char * efi_handle_name ( EFI_HANDLE handle ) {
return name;
}

/* Use raw handle value if no name found */
snprintf ( buf, sizeof ( buf ), "UNKNOWN<%p>", handle );
/* If no name is found, then use the raw handle value and a
* list of installed protocols.
*/
used = ssnprintf ( buf, sizeof ( buf ), "UNKNOWN<%p", handle );
if ( ( efirc = bs->ProtocolsPerHandle ( handle, &protocols,
&count ) ) == 0 ) {
for ( i = 0 ; i < count ; i++ ) {
used += ssnprintf ( ( buf + used ),
( sizeof ( buf ) - used ), ",%s",
efi_guid_ntoa ( protocols[i] ) );
}
bs->FreePool ( protocols );
}
used += ssnprintf ( ( buf + used ), ( sizeof ( buf ) - used ), ">" );
return buf;
}

0 comments on commit e08d7cc

Please sign in to comment.