0
|
1 #include <efi.h>
|
|
2 #include <efilib.h>
|
|
3
|
|
4 EFI_STATUS
|
|
5 efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
|
6 {
|
|
7 InitializeLib(image, systab);
|
|
8
|
|
9 Print(L"test start.\n");
|
|
10
|
|
11 UINTN map_size, cookie, size, version;
|
|
12 map_size = EFI_PAGE_SIZE * 2;
|
|
13 EFI_MEMORY_DESCRIPTOR *md;
|
|
14
|
|
15 EFI_STATUS status = uefi_call_wrapper(BS->AllocatePool, 3, EfiLoaderData, map_size, &md);
|
|
16
|
|
17 if (EFI_ERROR(status)) {
|
|
18 Print(L"error 'allocate pool' %r \n", status);
|
|
19 }
|
|
20
|
|
21 status = uefi_call_wrapper(BS->GetMemoryMap, 5, &map_size, md, &cookie, &size, &version);
|
|
22 if (EFI_ERROR(status)) {
|
|
23 Print(L"error 'get memory map' %r \n", status);
|
|
24 }
|
|
25
|
|
26 /*
|
|
27 UINTN nr_map = map_size/size;
|
|
28
|
|
29 UINTN i;
|
|
30 for (i=0; i <nr_map ;i++) {
|
|
31 EFI_MEMORY_DESCRIPTOR p = md[i];
|
|
32 switch (p.Type) {
|
|
33 case EfiReservedMemoryType:
|
|
34 Print(L"| reserved memory.");
|
|
35 break;
|
|
36 case EfiLoaderCode:
|
|
37 Print(L"| loader code.");
|
|
38 break;
|
|
39 case EfiLoaderData:
|
|
40 Print(L"| loader data.");
|
|
41 break;
|
|
42 case EfiBootServicesCode:
|
|
43 Print(L"| boot services code.");
|
|
44 break;
|
|
45 case EfiBootServicesData:
|
|
46 Print(L"| boot services data.");
|
|
47 break;
|
|
48 case EfiConventionalMemory:
|
|
49 Print(L"| conventional memory.");
|
|
50 break;
|
|
51 case EfiUnusableMemory:
|
|
52 Print(L"| unusable memory.");
|
|
53 break;
|
|
54 case EfiACPIReclaimMemory:
|
|
55 Print(L"| ACPI reclaim memory.");
|
|
56 break;
|
|
57 case EfiACPIMemoryNVS:
|
|
58 Print(L"| ACPI memory NVS.");
|
|
59 break;
|
|
60 case EfiMemoryMappedIO:
|
|
61 Print(L"| memory mapped IO.");
|
|
62 break;
|
|
63 case EfiMemoryMappedIOPortSpace:
|
|
64 Print(L"| memory mapped IO port space.");
|
|
65 break;
|
|
66 case EfiPalCode:
|
|
67 Print(L"| pal code. ");
|
|
68 break;
|
|
69 case EfiMaxMemoryType:
|
|
70 Print(L"| max memory type.");
|
|
71 break;
|
|
72 }
|
|
73 }
|
|
74 */
|
|
75
|
|
76 status = uefi_call_wrapper(BS->ExitBootServices, 2, image, cookie);
|
|
77
|
|
78 if (EFI_ERROR(status)) {
|
|
79 Print(L"error 'exit boot services' %r \n", status);
|
|
80 }
|
|
81
|
|
82 while(1) { }
|
|
83
|
|
84 return EFI_SUCCESS;
|
|
85 }
|