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