summaryrefslogtreecommitdiff
path: root/gnu-efi-3.0/apps/t3.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu-efi-3.0/apps/t3.c')
-rw-r--r--gnu-efi-3.0/apps/t3.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/gnu-efi-3.0/apps/t3.c b/gnu-efi-3.0/apps/t3.c
new file mode 100644
index 0000000..623830a
--- /dev/null
+++ b/gnu-efi-3.0/apps/t3.c
@@ -0,0 +1,95 @@
+#include <efi.h>
+#include <efilib.h>
+
+EFI_STATUS
+efi_main(
+ EFI_HANDLE image_handle,
+ EFI_SYSTEM_TABLE *systab
+)
+{
+ EFI_GUID loaded_image_protocol = LOADED_IMAGE_PROTOCOL;
+ EFI_STATUS efi_status;
+ EFI_LOADED_IMAGE *li;
+ UINTN pat = PoolAllocationType;
+ VOID *void_li_p;
+
+ InitializeLib(image_handle, systab);
+ PoolAllocationType = 2; /* klooj */
+
+ Print(L"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
+
+ Print(L"before InitializeLib(): PoolAllocationType=%d\n",
+ pat);
+
+ Print(L" after InitializeLib(): PoolAllocationType=%d\n",
+ PoolAllocationType);
+
+ /*
+ * Locate loaded_image_handle instance.
+ */
+
+ Print(L"BS->HandleProtocol() ");
+
+ efi_status = uefi_call_wrapper(
+ BS->HandleProtocol,
+ 3,
+ image_handle,
+ &loaded_image_protocol,
+ &void_li_p);
+ li = void_li_p;
+
+ Print(L"%xh (%r)\n", efi_status, efi_status);
+
+ if (efi_status != EFI_SUCCESS) {
+ return efi_status;
+ }
+
+ Print(L" li: %xh\n", li);
+
+ if (!li) {
+ return EFI_UNSUPPORTED;
+ }
+
+ Print(L" li->Revision: %xh\n", li->Revision);
+ Print(L" li->ParentHandle: %xh\n", li->ParentHandle);
+ Print(L" li->SystemTable: %xh\n", li->SystemTable);
+ Print(L" li->DeviceHandle: %xh\n", li->DeviceHandle);
+ Print(L" li->FilePath: %xh\n", li->FilePath);
+ Print(L" li->Reserved: %xh\n", li->Reserved);
+ Print(L" li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
+ Print(L" li->LoadOptions: %xh\n", li->LoadOptions);
+ Print(L" li->ImageBase: %xh\n", li->ImageBase);
+ Print(L" li->ImageSize: %xh\n", li->ImageSize);
+ Print(L" li->ImageCodeType: %xh\n", li->ImageCodeType);
+ Print(L" li->ImageDataType: %xh\n", li->ImageDataType);
+ Print(L" li->Unload: %xh\n", li->Unload);
+
+#if 0
+typedef struct {
+ UINT32 Revision;
+ EFI_HANDLE ParentHandle;
+ struct _EFI_SYSTEM_TABLE *SystemTable;
+
+ // Source location of image
+ EFI_HANDLE DeviceHandle;
+ EFI_DEVICE_PATH *FilePath;
+ VOID *Reserved;
+
+ // Images load options
+ UINT32 LoadOptionsSize;
+ VOID *LoadOptions;
+
+ // Location of where image was loaded
+ VOID *ImageBase;
+ UINT64 ImageSize;
+ EFI_MEMORY_TYPE ImageCodeType;
+ EFI_MEMORY_TYPE ImageDataType;
+
+ // If the driver image supports a dynamic unload request
+ EFI_IMAGE_UNLOAD Unload;
+
+} EFI_LOADED_IMAGE;
+#endif
+
+ return EFI_SUCCESS;
+}