summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2014-07-31 13:22:40 +0200
committerMichael Brown2014-07-31 13:50:09 +0200
commit4a480f1d1565aa5972c4fc27ceec8ae4b9b1e86c (patch)
tree7d6cc53d78cc711330425810dd78320ab5aaaf81 /src
parent[efi] Allow compiler to perform type checks on EFI_HANDLE (diff)
downloadipxe-4a480f1d1565aa5972c4fc27ceec8ae4b9b1e86c.tar.gz
ipxe-4a480f1d1565aa5972c4fc27ceec8ae4b9b1e86c.tar.xz
ipxe-4a480f1d1565aa5972c4fc27ceec8ae4b9b1e86c.zip
[efi] Avoid unnecessarily passing pointers to EFI_HANDLEs
efi_file_install() and efi_download_install() are both used to install onto existing handles. There is therefore no need to allow for each of their calls to InstallMultipleProtocolInterfaces() to create a new handle. By passing the handle directly (rather than a pointer to the handle), we avoid potential confusion (and erroneous debug message colours). Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/image/efi_image.c4
-rw-r--r--src/include/ipxe/efi/efi_download.h4
-rw-r--r--src/include/ipxe/efi/efi_file.h2
-rw-r--r--src/interface/efi/efi_download.c4
-rw-r--r--src/interface/efi/efi_file.c14
5 files changed, 14 insertions, 14 deletions
diff --git a/src/image/efi_image.c b/src/image/efi_image.c
index 02ff8b2f..45a68e53 100644
--- a/src/image/efi_image.c
+++ b/src/image/efi_image.c
@@ -157,14 +157,14 @@ static int efi_image_exec ( struct image *image ) {
}
/* Install file I/O protocols */
- if ( ( rc = efi_file_install ( &snpdev->handle ) ) != 0 ) {
+ if ( ( rc = efi_file_install ( snpdev->handle ) ) != 0 ) {
DBGC ( image, "EFIIMAGE %p could not install file protocol: "
"%s\n", image, strerror ( rc ) );
goto err_file_install;
}
/* Install iPXE download protocol */
- if ( ( rc = efi_download_install ( &snpdev->handle ) ) != 0 ) {
+ if ( ( rc = efi_download_install ( snpdev->handle ) ) != 0 ) {
DBGC ( image, "EFIIMAGE %p could not install iPXE download "
"protocol: %s\n", image, strerror ( rc ) );
goto err_download_install;
diff --git a/src/include/ipxe/efi/efi_download.h b/src/include/ipxe/efi/efi_download.h
index 3ce49722..740fcadf 100644
--- a/src/include/ipxe/efi/efi_download.h
+++ b/src/include/ipxe/efi/efi_download.h
@@ -151,7 +151,7 @@ struct _IPXE_DOWNLOAD_PROTOCOL {
0x3eaeaebd, 0xdecf, 0x493b, { 0x9b, 0xd1, 0xcd, 0xb2, 0xde, 0xca, 0xe7, 0x19 } \
}
-extern int efi_download_install ( EFI_HANDLE *device );
-extern void efi_download_uninstall ( EFI_HANDLE device );
+extern int efi_download_install ( EFI_HANDLE handle );
+extern void efi_download_uninstall ( EFI_HANDLE handle );
#endif /* _IPXE_DOWNLOAD_H */
diff --git a/src/include/ipxe/efi/efi_file.h b/src/include/ipxe/efi/efi_file.h
index 0d75cf5b..e4db0305 100644
--- a/src/include/ipxe/efi/efi_file.h
+++ b/src/include/ipxe/efi/efi_file.h
@@ -7,7 +7,7 @@
*
*/
-extern int efi_file_install ( EFI_HANDLE *handle );
+extern int efi_file_install ( EFI_HANDLE handle );
extern void efi_file_uninstall ( EFI_HANDLE handle );
#endif /* _IPXE_EFI_FILE_H */
diff --git a/src/interface/efi/efi_download.c b/src/interface/efi/efi_download.c
index 522276ac..1218852e 100644
--- a/src/interface/efi/efi_download.c
+++ b/src/interface/efi/efi_download.c
@@ -205,13 +205,13 @@ static IPXE_DOWNLOAD_PROTOCOL ipxe_download_protocol_interface = {
* @v handle EFI handle
* @ret rc Return status code
*/
-int efi_download_install ( EFI_HANDLE *handle ) {
+int efi_download_install ( EFI_HANDLE handle ) {
EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
EFI_STATUS efirc;
int rc;
efirc = bs->InstallMultipleProtocolInterfaces (
- handle,
+ &handle,
&ipxe_download_protocol_guid,
&ipxe_download_protocol_interface,
NULL );
diff --git a/src/interface/efi/efi_file.c b/src/interface/efi/efi_file.c
index f8713750..aafc781a 100644
--- a/src/interface/efi/efi_file.c
+++ b/src/interface/efi/efi_file.c
@@ -575,7 +575,7 @@ static EFI_DISK_IO_PROTOCOL efi_disk_io_protocol = {
* @v handle EFI handle
* @ret rc Return status code
*/
-int efi_file_install ( EFI_HANDLE *handle ) {
+int efi_file_install ( EFI_HANDLE handle ) {
EFI_BOOT_SERVICES *bs = efi_systab->BootServices;
union {
EFI_DISK_IO_PROTOCOL *diskio;
@@ -592,7 +592,7 @@ int efi_file_install ( EFI_HANDLE *handle ) {
* handle just to keep things looking normal.
*/
if ( ( efirc = bs->InstallMultipleProtocolInterfaces (
- handle,
+ &handle,
&efi_block_io_protocol_guid,
&efi_block_io_protocol,
&efi_disk_io_protocol_guid,
@@ -624,9 +624,9 @@ int efi_file_install ( EFI_HANDLE *handle ) {
* of calls to our DRIVER_STOP method when starting the EFI
* shell. I have no idea why this is.
*/
- if ( ( efirc = bs->OpenProtocol ( *handle, &efi_disk_io_protocol_guid,
+ if ( ( efirc = bs->OpenProtocol ( handle, &efi_disk_io_protocol_guid,
&diskio.interface, efi_image_handle,
- *handle,
+ handle,
EFI_OPEN_PROTOCOL_BY_DRIVER ) ) != 0){
rc = -EEFI ( efirc );
DBGC ( handle, "Could not open disk I/O protocol: %s\n",
@@ -637,11 +637,11 @@ int efi_file_install ( EFI_HANDLE *handle ) {
return 0;
- bs->CloseProtocol ( *handle, &efi_disk_io_protocol_guid,
- efi_image_handle, *handle );
+ bs->CloseProtocol ( handle, &efi_disk_io_protocol_guid,
+ efi_image_handle, handle );
err_open:
bs->UninstallMultipleProtocolInterfaces (
- *handle,
+ handle,
&efi_simple_file_system_protocol_guid,
&efi_simple_file_system_protocol,
&efi_disk_io_protocol_guid,