#include <stdlib.h>
#include <errno.h>
#include <ipxe/device.h>
+#include <ipxe/init.h>
#include <ipxe/efi/efi.h>
#include <ipxe/efi/efi_driver.h>
#include <ipxe/efi/efi_snp.h>
if ( ( efirc = efi_init ( image_handle, systab ) ) != 0 )
goto err_init;
- /* Identify autoboot device, if any */
- efi_set_autoboot_ll_addr ( efi_loaded_image->DeviceHandle );
-
- /* Load autoexec script, if any */
- efi_autoexec_load ( efi_loaded_image->DeviceHandle );
-
/* Claim SNP devices for use by iPXE */
efi_snp_claim();
return efirc;
}
+/**
+ * Initialise EFI application
+ *
+ */
+static void efi_init_application ( void ) {
+ EFI_HANDLE device = efi_loaded_image->DeviceHandle;
+
+ /* Identify autoboot device, if any */
+ efi_set_autoboot_ll_addr ( device );
+
+ /* Load autoexec script, if any */
+ efi_autoexec_load ( device );
+}
+
+/** EFI application initialisation function */
+struct init_fn efi_init_application_fn __init_fn ( INIT_NORMAL ) = {
+ .initialise = efi_init_application,
+};
+
/**
* Probe EFI root bus
*