diff options
author | Michael Brown | 2013-04-18 22:29:53 +0200 |
---|---|---|
committer | Michael Brown | 2013-04-19 14:34:19 +0200 |
commit | 54409583e29c481556e94a99dc73316d18aafc74 (patch) | |
tree | 150a8ceb85c1b523dc8dd8dd36daf8f6260e6538 /src/interface/efi/efi_file.c | |
parent | [libc] Redefine low 8 bits of error code as "platform error code" (diff) | |
download | ipxe-54409583e29c481556e94a99dc73316d18aafc74.tar.gz ipxe-54409583e29c481556e94a99dc73316d18aafc74.tar.xz ipxe-54409583e29c481556e94a99dc73316d18aafc74.zip |
[efi] Perform meaningful error code conversions
Exploit the redefinition of iPXE error codes to include a "platform
error code" to allow for meaningful conversion of EFI_STATUS values to
iPXE errors and vice versa.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/efi/efi_file.c')
-rw-r--r-- | src/interface/efi/efi_file.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/interface/efi/efi_file.c b/src/interface/efi/efi_file.c index 6f9d44f8..4c482d2e 100644 --- a/src/interface/efi/efi_file.c +++ b/src/interface/efi/efi_file.c @@ -30,6 +30,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <errno.h> #include <wchar.h> #include <ipxe/image.h> #include <ipxe/efi/efi.h> @@ -549,6 +550,7 @@ static EFI_BLOCK_IO_PROTOCOL efi_block_io_protocol = { int efi_file_install ( EFI_HANDLE *handle ) { EFI_BOOT_SERVICES *bs = efi_systab->BootServices; EFI_STATUS efirc; + int rc; /* Install the simple file system protocol and the block I/O * protocol. We don't have a block device, but large parts of @@ -563,9 +565,10 @@ int efi_file_install ( EFI_HANDLE *handle ) { &efi_block_io_protocol, &efi_simple_file_system_protocol_guid, &efi_simple_file_system_protocol, NULL ) ) != 0 ) { + rc = -EEFI ( efirc ); DBGC ( handle, "Could not install simple file system protocol: " - "%s\n", efi_strerror ( efirc ) ); - return EFIRC_TO_RC ( efirc ); + "%s\n", strerror ( rc ) ); + return rc; } return 0; |