Home | History | Annotate | Download | only in apps
      1 #include <efi.h>
      2 #include <efilib.h>
      3 
      4 typedef EFI_STATUS (*foo_t)(EFI_HANDLE, EFI_GUID *, VOID **);
      5 typedef struct {
      6 	unsigned long addr;
      7 	unsigned long gp;
      8 } fdesc_t;
      9 
     10 EFI_LOADED_IMAGE my_loaded;
     11 
     12 EFI_STATUS
     13 efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
     14 {
     15 	EFI_LOADED_IMAGE *loaded_image = NULL;
     16 #if 0
     17 	EFI_DEVICE_PATH *dev_path;
     18 #endif
     19 	EFI_STATUS status;
     20 
     21 	InitializeLib(image, systab);
     22 	status = uefi_call_wrapper(systab->BootServices->HandleProtocol,
     23 				3,
     24 				image,
     25 				&LoadedImageProtocol,
     26 				(void **) &loaded_image);
     27 	if (EFI_ERROR(status)) {
     28 		Print(L"handleprotocol: %r\n", status);
     29 	}
     30 
     31 #if 0
     32 	BS->HandleProtocol(loaded_image->DeviceHandle, &DevicePathProtocol, (void **) &dev_path);
     33 
     34 	Print(L"Image device      : %s\n", DevicePathToStr(dev_path));
     35 	Print(L"Image file        : %s\n", DevicePathToStr(loaded_image->FilePath));
     36 #endif
     37 	Print(L"Image base        : %lx\n", loaded_image->ImageBase);
     38 	Print(L"Image size        : %lx\n", loaded_image->ImageSize);
     39 	Print(L"Load options size : %lx\n", loaded_image->LoadOptionsSize);
     40 	Print(L"Load options      : %s\n", loaded_image->LoadOptions);
     41 
     42 	return EFI_SUCCESS;
     43 }
     44