Imported Upstream version 3.0
[platform/upstream/gnu-efi.git] / apps / t3.c
1 #include <efi.h>
2 #include <efilib.h>
3
4 EFI_STATUS
5 efi_main(
6         EFI_HANDLE image_handle,
7         EFI_SYSTEM_TABLE *systab
8 )
9 {
10         EFI_GUID loaded_image_protocol = LOADED_IMAGE_PROTOCOL;
11         EFI_STATUS efi_status;
12         EFI_LOADED_IMAGE *li;
13         UINTN pat = PoolAllocationType;
14         VOID *void_li_p;
15
16         InitializeLib(image_handle, systab);
17         PoolAllocationType = 2; /* klooj */
18
19         Print(L"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
20
21         Print(L"before InitializeLib(): PoolAllocationType=%d\n",
22                 pat);
23
24         Print(L" after InitializeLib(): PoolAllocationType=%d\n",
25                 PoolAllocationType);
26
27         /*
28          * Locate loaded_image_handle instance.
29          */
30
31         Print(L"BS->HandleProtocol()  ");
32
33         efi_status = uefi_call_wrapper(
34                 BS->HandleProtocol,
35                 3,
36                 image_handle,
37                 &loaded_image_protocol,
38                 &void_li_p);
39         li = void_li_p;
40
41         Print(L"%xh (%r)\n", efi_status, efi_status);
42
43         if (efi_status != EFI_SUCCESS) {
44                 return efi_status;
45         }
46
47         Print(L"  li: %xh\n", li);
48
49         if (!li) {
50                 return EFI_UNSUPPORTED;
51         }
52
53         Print(L"  li->Revision:        %xh\n", li->Revision);
54         Print(L"  li->ParentHandle:    %xh\n", li->ParentHandle);
55         Print(L"  li->SystemTable:     %xh\n", li->SystemTable);
56         Print(L"  li->DeviceHandle:    %xh\n", li->DeviceHandle);
57         Print(L"  li->FilePath:        %xh\n", li->FilePath);
58         Print(L"  li->Reserved:        %xh\n", li->Reserved);
59         Print(L"  li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
60         Print(L"  li->LoadOptions:     %xh\n", li->LoadOptions);
61         Print(L"  li->ImageBase:       %xh\n", li->ImageBase);
62         Print(L"  li->ImageSize:       %xh\n", li->ImageSize);
63         Print(L"  li->ImageCodeType:   %xh\n", li->ImageCodeType);
64         Print(L"  li->ImageDataType:   %xh\n", li->ImageDataType);
65         Print(L"  li->Unload:          %xh\n", li->Unload);
66
67 #if 0
68 typedef struct {
69     UINT32                          Revision;
70     EFI_HANDLE                      ParentHandle;
71     struct _EFI_SYSTEM_TABLE        *SystemTable;
72
73     // Source location of image
74     EFI_HANDLE                      DeviceHandle;
75     EFI_DEVICE_PATH                 *FilePath;
76     VOID                            *Reserved;
77
78     // Images load options
79     UINT32                          LoadOptionsSize;
80     VOID                            *LoadOptions;
81
82     // Location of where image was loaded
83     VOID                            *ImageBase;
84     UINT64                          ImageSize;
85     EFI_MEMORY_TYPE                 ImageCodeType;
86     EFI_MEMORY_TYPE                 ImageDataType;
87
88     // If the driver image supports a dynamic unload request
89     EFI_IMAGE_UNLOAD                Unload;
90
91 } EFI_LOADED_IMAGE;
92 #endif
93
94         return EFI_SUCCESS;
95 }