VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/OvmfPkg/Include/Library/QemuFwCfgLib.h@ 58464

Last change on this file since 58464 was 58464, checked in by vboxsync, 9 years ago

EFI/Firmware: Export new files and directories.

  • Property svn:eol-style set to native
File size: 5.5 KB
Line 
1/** @file
2 QEMU/KVM Firmware Configuration access
3
4 Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
5 Copyright (C) 2013, Red Hat, Inc.
6
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15**/
16
17#ifndef __FW_CFG_LIB__
18#define __FW_CFG_LIB__
19
20//
21// The size, in bytes, of names of firmware configuration files, including at
22// least one terminating NUL byte.
23//
24#define QEMU_FW_CFG_FNAME_SIZE 56
25
26typedef enum {
27 QemuFwCfgItemSignature = 0x0000,
28 QemuFwCfgItemInterfaceVersion = 0x0001,
29 QemuFwCfgItemSystemUuid = 0x0002,
30 QemuFwCfgItemRamSize = 0x0003,
31 QemuFwCfgItemGraphicsEnabled = 0x0004,
32 QemuFwCfgItemSmpCpuCount = 0x0005,
33 QemuFwCfgItemMachineId = 0x0006,
34 QemuFwCfgItemKernelAddress = 0x0007,
35 QemuFwCfgItemKernelSize = 0x0008,
36 QemuFwCfgItemKernelCommandLine = 0x0009,
37 QemuFwCfgItemInitrdAddress = 0x000a,
38 QemuFwCfgItemInitrdSize = 0x000b,
39 QemuFwCfgItemBootDevice = 0x000c,
40 QemuFwCfgItemNumaData = 0x000d,
41 QemuFwCfgItemBootMenu = 0x000e,
42 QemuFwCfgItemMaximumCpuCount = 0x000f,
43 QemuFwCfgItemKernelEntry = 0x0010,
44 QemuFwCfgItemKernelData = 0x0011,
45 QemuFwCfgItemInitrdData = 0x0012,
46 QemuFwCfgItemCommandLineAddress = 0x0013,
47 QemuFwCfgItemCommandLineSize = 0x0014,
48 QemuFwCfgItemCommandLineData = 0x0015,
49 QemuFwCfgItemKernelSetupAddress = 0x0016,
50 QemuFwCfgItemKernelSetupSize = 0x0017,
51 QemuFwCfgItemKernelSetupData = 0x0018,
52 QemuFwCfgItemFileDir = 0x0019,
53
54 QemuFwCfgItemX86AcpiTables = 0x8000,
55 QemuFwCfgItemX86SmbiosTables = 0x8001,
56 QemuFwCfgItemX86Irq0Override = 0x8002,
57 QemuFwCfgItemX86E820Table = 0x8003,
58 QemuFwCfgItemX86HpetData = 0x8004,
59
60} FIRMWARE_CONFIG_ITEM;
61
62
63/**
64 Returns a boolean indicating if the firmware configuration interface
65 is available or not.
66
67 This function may change fw_cfg state.
68
69 @retval TRUE The interface is available
70 @retval FALSE The interface is not available
71
72**/
73BOOLEAN
74EFIAPI
75QemuFwCfgIsAvailable (
76 VOID
77 );
78
79
80/**
81 Selects a firmware configuration item for reading.
82
83 Following this call, any data read from this item will start from
84 the beginning of the configuration item's data.
85
86 @param[in] QemuFwCfgItem - Firmware Configuration item to read
87
88**/
89VOID
90EFIAPI
91QemuFwCfgSelectItem (
92 IN FIRMWARE_CONFIG_ITEM QemuFwCfgItem
93 );
94
95
96/**
97 Reads firmware configuration bytes into a buffer
98
99 If called multiple times, then the data read will
100 continue at the offset of the firmware configuration
101 item where the previous read ended.
102
103 @param[in] Size - Size in bytes to read
104 @param[in] Buffer - Buffer to store data into
105
106**/
107VOID
108EFIAPI
109QemuFwCfgReadBytes (
110 IN UINTN Size,
111 IN VOID *Buffer OPTIONAL
112 );
113
114
115/**
116 Writes firmware configuration bytes from a buffer
117
118 If called multiple times, then the data written will
119 continue at the offset of the firmware configuration
120 item where the previous write ended.
121
122 @param[in] Size - Size in bytes to write
123 @param[in] Buffer - Buffer to read data from
124
125**/
126VOID
127EFIAPI
128QemuFwCfgWriteBytes (
129 IN UINTN Size,
130 IN VOID *Buffer
131 );
132
133
134/**
135 Reads a UINT8 firmware configuration value
136
137 @return Value of Firmware Configuration item read
138
139**/
140UINT8
141EFIAPI
142QemuFwCfgRead8 (
143 VOID
144 );
145
146
147/**
148 Reads a UINT16 firmware configuration value
149
150 @return Value of Firmware Configuration item read
151
152**/
153UINT16
154EFIAPI
155QemuFwCfgRead16 (
156 VOID
157 );
158
159
160/**
161 Reads a UINT32 firmware configuration value
162
163 @return Value of Firmware Configuration item read
164
165**/
166UINT32
167EFIAPI
168QemuFwCfgRead32 (
169 VOID
170 );
171
172
173/**
174 Reads a UINT64 firmware configuration value
175
176 @return Value of Firmware Configuration item read
177
178**/
179UINT64
180EFIAPI
181QemuFwCfgRead64 (
182 VOID
183 );
184
185
186/**
187 Find the configuration item corresponding to the firmware configuration file.
188
189 @param[in] Name - Name of file to look up.
190 @param[out] Item - Configuration item corresponding to the file, to be passed
191 to QemuFwCfgSelectItem ().
192 @param[out] Size - Number of bytes in the file.
193
194 @return RETURN_SUCCESS If file is found.
195 RETURN_NOT_FOUND If file is not found.
196 RETURN_UNSUPPORTED If firmware configuration is unavailable.
197
198**/
199RETURN_STATUS
200EFIAPI
201QemuFwCfgFindFile (
202 IN CONST CHAR8 *Name,
203 OUT FIRMWARE_CONFIG_ITEM *Item,
204 OUT UINTN *Size
205 );
206
207
208/**
209 Returns a boolean indicating if the firmware configuration interface is
210 available for library-internal purposes.
211
212 This function never changes fw_cfg state.
213
214 @retval TRUE The interface is available internally.
215 @retval FALSE The interface is not available internally.
216**/
217BOOLEAN
218EFIAPI
219InternalQemuFwCfgIsAvailable (
220 VOID
221 );
222
223
224/**
225 Determine if S3 support is explicitly enabled.
226
227 @retval TRUE if S3 support is explicitly enabled.
228 FALSE otherwise. This includes unavailability of the firmware
229 configuration interface.
230**/
231BOOLEAN
232EFIAPI
233QemuFwCfgS3Enabled (
234 VOID
235 );
236
237#endif
238
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette