Warning: This file is not a C or C++ file. It does not have highlighting.
| 1 | //===-- Definition of EFI_RUNTIME_SERVICES type ---------------------------===// |
|---|---|
| 2 | // |
| 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | // |
| 7 | //===----------------------------------------------------------------------===// |
| 8 | |
| 9 | #ifndef LLVM_LIBC_TYPES_EFI_RUNTIME_SERVICES_H |
| 10 | #define LLVM_LIBC_TYPES_EFI_RUNTIME_SERVICES_H |
| 11 | |
| 12 | #include "../llvm-libc-macros/EFIAPI-macros.h" |
| 13 | #include "../llvm-libc-macros/stdint-macros.h" |
| 14 | #include "EFI_CAPSULE.h" |
| 15 | #include "EFI_MEMORY_DESCRIPTOR.h" |
| 16 | #include "EFI_PHYSICAL_ADDRESS.h" |
| 17 | #include "EFI_STATUS.h" |
| 18 | #include "EFI_TABLE_HEADER.h" |
| 19 | #include "EFI_TIME.h" |
| 20 | #include "char16_t.h" |
| 21 | #include "size_t.h" |
| 22 | |
| 23 | #define EFI_RUNTIME_SERVICES_SIGNATURE 0x56524553544e5552 |
| 24 | #define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION |
| 25 | |
| 26 | #define EFI_VARIABLE_NON_VOLATILE 0x00000001 |
| 27 | #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 |
| 28 | #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 |
| 29 | #define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 |
| 30 | // This attribute is identified by the mnemonic 'HR' elsewhere |
| 31 | // in this specification. |
| 32 | #define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010 |
| 33 | // NOTE: EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS is deprecated |
| 34 | // and should be considered reserved. |
| 35 | #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 |
| 36 | #define EFI_VARIABLE_APPEND_WRITE 0x00000040 |
| 37 | #define EFI_VARIABLE_ENHANCED_AUTHENTICATED_ACCESS 0x00000080 |
| 38 | |
| 39 | typedef enum { |
| 40 | EfiResetCold, |
| 41 | EfiResetWarm, |
| 42 | EfiResetShutdown, |
| 43 | EfiResetPlatformSpecific, |
| 44 | } EFI_RESET_TYPE; |
| 45 | |
| 46 | #define EFI_VARIABLE_AUTHENTICATION_3_CERT_ID_SHA256 1 |
| 47 | |
| 48 | typedef struct { |
| 49 | uint8_t Type; |
| 50 | uint32_t IdSize; |
| 51 | // Value is defined as: |
| 52 | // uint8_t Id[IdSize]; |
| 53 | } EFI_VARIABLE_AUTHENTICATION_3_CERT_ID; |
| 54 | |
| 55 | typedef EFI_STATUS(EFIAPI *EFI_GET_TIME)(EFI_TIME *Time, |
| 56 | EFI_TIME_CAPABILITIES *Capabilities); |
| 57 | typedef EFI_STATUS(EFIAPI *EFI_SET_TIME)(EFI_TIME *Time); |
| 58 | typedef EFI_STATUS(EFIAPI *EFI_GET_WAKEUP_TIME)(bool *Enabled, bool *Pending, |
| 59 | EFI_TIME *Time); |
| 60 | typedef EFI_STATUS(EFIAPI *EFI_SET_WAKEUP_TIME)(bool *Enabled, EFI_TIME *Time); |
| 61 | |
| 62 | typedef EFI_STATUS(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)( |
| 63 | size_t MemoryMapSize, size_t DescriptorSize, uint32_t DescriptorVersion, |
| 64 | EFI_MEMORY_DESCRIPTOR *VirtualMap); |
| 65 | typedef EFI_STATUS(EFIAPI *EFI_CONVERT_POINTER)(size_t DebugDisposition, |
| 66 | void **Address); |
| 67 | |
| 68 | typedef EFI_STATUS(EFIAPI *EFI_GET_VARIABLE)(char16_t *VariableName, |
| 69 | EFI_GUID *VendorGuid, |
| 70 | uint32_t *Attributes, |
| 71 | size_t *DataSize, void *Data); |
| 72 | typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(size_t *VariableNameSize, |
| 73 | char16_t *VariableName, |
| 74 | EFI_GUID *VendorGuid); |
| 75 | typedef EFI_STATUS(EFIAPI *EFI_SET_VARIABLE)(char16_t *VariableName, |
| 76 | EFI_GUID *VendorGuid, |
| 77 | uint32_t Attributes, |
| 78 | size_t DataSize, void *Data); |
| 79 | |
| 80 | typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(uint32_t *HighCount); |
| 81 | typedef void(EFIAPI *EFI_RESET_SYSTEM)(EFI_RESET_TYPE ResetType, |
| 82 | EFI_STATUS ResetStatus, size_t DataSize, |
| 83 | void *ResetData); |
| 84 | |
| 85 | typedef EFI_STATUS(EFIAPI *EFI_UPDATE_CAPSULE)( |
| 86 | EFI_CAPSULE_HEADER **CapsuleHeaderArray, size_t CapsuleCount, |
| 87 | EFI_PHYSICAL_ADDRESS ScatterGatherList); |
| 88 | typedef EFI_STATUS(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)( |
| 89 | EFI_CAPSULE_HEADER **CapsuleHeaderArray, size_t CapsuleCount, |
| 90 | uint64_t *MaximumCapsuleSize, EFI_RESET_TYPE ResetType); |
| 91 | |
| 92 | typedef EFI_STATUS(EFIAPI *EFI_QUERY_VARIABLE_INFO)( |
| 93 | uint32_t Attributes, uint64_t *MaximumVariableStorageSize, |
| 94 | uint64_t *RemainingVariableStorageSize, uint64_t *MaximumVariableSize); |
| 95 | |
| 96 | typedef struct { |
| 97 | EFI_TABLE_HEADER Hdr; |
| 98 | |
| 99 | /// |
| 100 | /// Time Services |
| 101 | EFI_GET_TIME GetTime; |
| 102 | EFI_SET_TIME SetTime; |
| 103 | EFI_GET_WAKEUP_TIME GetWakeupTime; |
| 104 | EFI_SET_WAKEUP_TIME SetWakeupTime; |
| 105 | |
| 106 | // |
| 107 | // Virtual Memory Services |
| 108 | // |
| 109 | EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; |
| 110 | EFI_CONVERT_POINTER ConvertPointer; |
| 111 | |
| 112 | // |
| 113 | // Variable Services |
| 114 | // |
| 115 | EFI_GET_VARIABLE GetVariable; |
| 116 | EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; |
| 117 | EFI_SET_VARIABLE SetVariable; |
| 118 | |
| 119 | // |
| 120 | // Miscellaneous Services |
| 121 | // |
| 122 | EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; |
| 123 | EFI_RESET_SYSTEM ResetSystem; |
| 124 | |
| 125 | // |
| 126 | // UEFI 2.0 Capsule Services |
| 127 | // |
| 128 | EFI_UPDATE_CAPSULE UpdateCapsule; |
| 129 | EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities; |
| 130 | |
| 131 | // |
| 132 | // Miscellaneous UEFI 2.0 Service |
| 133 | // |
| 134 | EFI_QUERY_VARIABLE_INFO QueryVariableInfo; |
| 135 | } EFI_RUNTIME_SERVICES; |
| 136 | |
| 137 | #endif // LLVM_LIBC_TYPES_EFI_RUNTIME_SERVICES_H |
| 138 |
Warning: This file is not a C or C++ file. It does not have highlighting.
