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
39typedef 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
48typedef 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
55typedef EFI_STATUS(EFIAPI *EFI_GET_TIME)(EFI_TIME *Time,
56 EFI_TIME_CAPABILITIES *Capabilities);
57typedef EFI_STATUS(EFIAPI *EFI_SET_TIME)(EFI_TIME *Time);
58typedef EFI_STATUS(EFIAPI *EFI_GET_WAKEUP_TIME)(bool *Enabled, bool *Pending,
59 EFI_TIME *Time);
60typedef EFI_STATUS(EFIAPI *EFI_SET_WAKEUP_TIME)(bool *Enabled, EFI_TIME *Time);
61
62typedef EFI_STATUS(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
63 size_t MemoryMapSize, size_t DescriptorSize, uint32_t DescriptorVersion,
64 EFI_MEMORY_DESCRIPTOR *VirtualMap);
65typedef EFI_STATUS(EFIAPI *EFI_CONVERT_POINTER)(size_t DebugDisposition,
66 void **Address);
67
68typedef EFI_STATUS(EFIAPI *EFI_GET_VARIABLE)(char16_t *VariableName,
69 EFI_GUID *VendorGuid,
70 uint32_t *Attributes,
71 size_t *DataSize, void *Data);
72typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(size_t *VariableNameSize,
73 char16_t *VariableName,
74 EFI_GUID *VendorGuid);
75typedef EFI_STATUS(EFIAPI *EFI_SET_VARIABLE)(char16_t *VariableName,
76 EFI_GUID *VendorGuid,
77 uint32_t Attributes,
78 size_t DataSize, void *Data);
79
80typedef EFI_STATUS(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(uint32_t *HighCount);
81typedef void(EFIAPI *EFI_RESET_SYSTEM)(EFI_RESET_TYPE ResetType,
82 EFI_STATUS ResetStatus, size_t DataSize,
83 void *ResetData);
84
85typedef EFI_STATUS(EFIAPI *EFI_UPDATE_CAPSULE)(
86 EFI_CAPSULE_HEADER **CapsuleHeaderArray, size_t CapsuleCount,
87 EFI_PHYSICAL_ADDRESS ScatterGatherList);
88typedef EFI_STATUS(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
89 EFI_CAPSULE_HEADER **CapsuleHeaderArray, size_t CapsuleCount,
90 uint64_t *MaximumCapsuleSize, EFI_RESET_TYPE ResetType);
91
92typedef EFI_STATUS(EFIAPI *EFI_QUERY_VARIABLE_INFO)(
93 uint32_t Attributes, uint64_t *MaximumVariableStorageSize,
94 uint64_t *RemainingVariableStorageSize, uint64_t *MaximumVariableSize);
95
96typedef 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.

source code of libc/include/llvm-libc-types/EFI_RUNTIME_SERVICES.h