]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
Fix bounds check on parameter of type EFI_GCD_IO_TYPE to use EfiGcdIoTypeMaximum...
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / PiSmbiosRecordOnDataHubSmbiosRecordThunk / Thunk.h
CommitLineData
024b1029 1/** @file\r
2 The common header file for the thunk driver.\r
3 \r
584d5652
HT
4Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
5This program and the accompanying materials\r
024b1029 6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _DATAHUB_TO_SMBIOS_THUNK_\r
16#define _DATAHUB_TO_SMBIOS_THUNK_\r
17\r
18#include <FrameworkDxe.h>\r
19#include <IndustryStandard/SmBios.h>\r
20\r
21#include <Guid/EventGroup.h>\r
22#include <Guid/SmBios.h>\r
23#include <Protocol/DataHub.h>\r
24#include <Guid/DataHubRecords.h>\r
25#include <Protocol/HiiDatabase.h>\r
26#include <Protocol/Smbios.h>\r
27\r
28#include <Library/BaseLib.h>\r
29#include <Library/PcdLib.h>\r
30#include <Library/DebugLib.h>\r
31#include <Library/UefiLib.h>\r
32#include <Library/HiiLib.h>\r
33#include <Library/BaseMemoryLib.h>\r
34#include <Library/ReportStatusCodeLib.h>\r
35#include <Library/UefiDriverEntryPoint.h>\r
36#include <Library/MemoryAllocationLib.h>\r
37#include <Library/UefiBootServicesTableLib.h>\r
38\r
39//\r
40// Conversion Table that describes the translation method for\r
41// Data Hub Data Records of certain SubClass and RecordNumber\r
42//\r
43typedef enum {\r
26a76fbc
LG
44 BySubclassInstanceSubinstanceProducer,\r
45 BySubClassInstanceProducer,\r
46 MaxLocatingMethod\r
024b1029 47} SMBIOS_STRUCTURE_LOCATING_METHOD;\r
48\r
49typedef enum {\r
26a76fbc
LG
50 RecordDataUnchangedOffsetSpecified,\r
51 ByFunctionWithOffsetSpecified,\r
52 ByFunction,\r
53 ByFunctionWithWholeDataRecord,\r
54 MaxFieldFillingMethod\r
024b1029 55} SMBIOS_FIELD_FILLING_METHOD;\r
56\r
57typedef struct _SMBIOS_STRUCTURE_NODE SMBIOS_STRUCTURE_NODE;\r
58\r
59typedef struct {\r
60 UINT8 Type;\r
61 UINT8 Length;\r
62 UINT16 Handle;\r
63 UINT8 Tailing[2];\r
64} EFI_SMBIOS_TABLE_TYPE127;\r
65\r
66typedef\r
67EFI_STATUS\r
68(*SMBIOS_FIELD_FILLING_FUNCTION) (\r
69 IN OUT SMBIOS_STRUCTURE_NODE * StructureNode,\r
70 IN UINT32 Offset OPTIONAL,\r
71 IN VOID *RecordData,\r
72 IN UINT32 RecordDataSize\r
73 );\r
74\r
75typedef struct {\r
76 //\r
77 // Data Hub Data Record's SubClass and RecordNumber\r
78 //\r
79 EFI_GUID SubClass;\r
80 UINT32 RecordType;\r
81\r
82 //\r
83 // Translation method applied\r
84 //\r
85 UINT8 SmbiosType;\r
86 SMBIOS_STRUCTURE_LOCATING_METHOD StructureLocatingMethod;\r
87 SMBIOS_FIELD_FILLING_METHOD FieldFillingMethod;\r
88 UINT32 FieldOffset;\r
89 SMBIOS_FIELD_FILLING_FUNCTION FieldFillingFunction;\r
90\r
91} SMBIOS_CONVERSION_TABLE_ENTRY;\r
92\r
93//\r
94// SMBIOS_LINK_DATA_FIXUP nodes indicate the Link fields that\r
95// need to be fixed up when creating the resulting Smbios image.\r
96//\r
97#define SMBIOS_LINK_DATA_FIXUP_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'l', 'n')\r
98\r
99typedef struct {\r
100\r
101 UINT32 Signature;\r
102 LIST_ENTRY Link;\r
103\r
104 UINT32 Offset;\r
105 UINT8 TargetType;\r
106 EFI_GUID SubClass;\r
107 EFI_INTER_LINK_DATA LinkData;\r
108\r
109} SMBIOS_LINK_DATA_FIXUP_NODE;\r
110\r
111//\r
112// The global Structure List node.\r
113// The Structure List is populated as more and more\r
114// Structures (of various types) are discovered and inserted.\r
115// The nodes in the Structure List will be concatenated\r
116// to form the ultimate SMBIOS table.\r
117//\r
118#define SMBIOS_STRUCTURE_NODE_SIGNATURE SIGNATURE_32 ('S', 'm', 'b', 's')\r
119\r
120struct _SMBIOS_STRUCTURE_NODE {\r
121\r
122 UINT32 Signature;\r
123 LIST_ENTRY Link;\r
124\r
125 //\r
126 // Tags\r
127 //\r
128 EFI_GUID SubClass;\r
129 UINT16 Instance;\r
130 UINT16 SubInstance;\r
131 EFI_GUID ProducerName;\r
132\r
133 //\r
134 // the Smbios structure\r
135 //\r
136 UINT32 StructureSize; // Actual structure size including strings\r
137\r
138 EFI_SMBIOS_TABLE_HEADER *Structure;\r
139 \r
140 \r
141 EFI_SMBIOS_HANDLE SmbiosHandle; // Smbios Handle in SMBIOS database.\r
142 \r
143 EFI_SMBIOS_TYPE SmbiosType;\r
144 \r
145 LIST_ENTRY LinkDataFixup;\r
146 \r
147};\r
148\r
149//\r
150// Smbios type info table. Indicates minimum length\r
151// for each Smbios type as the indicator of the initial size of buffer\r
152// allocated for the structure instance of a specific type.\r
153//\r
154typedef struct {\r
155\r
156 UINT8 Type;\r
157 UINT8 MinLength; // Minimal structure size including\r
158 // TWO trailing bytes of 0x00\r
159 //\r
160 BOOLEAN IsRequired; // Required structure type defined by Smbios Spec\r
161 BOOLEAN IsCreated; // Created in this run\r
162} SMBIOS_TYPE_INFO_TABLE_ENTRY;\r
163\r
164//\r
165// EDK framwork Memory Data hub definition to support EDK/Framework driver.\r
166//\r
167typedef struct {\r
168 STRING_REF MemoryDeviceLocator;\r
169 STRING_REF MemoryBankLocator;\r
170 STRING_REF MemoryManufacturer;\r
171 STRING_REF MemorySerialNumber;\r
172 STRING_REF MemoryAssetTag;\r
173 STRING_REF MemoryPartNumber;\r
174 EFI_INTER_LINK_DATA MemoryArrayLink;\r
175 EFI_INTER_LINK_DATA MemorySubArrayLink;\r
176 UINT16 MemoryTotalWidth;\r
177 UINT16 MemoryDataWidth;\r
178 UINT64 MemoryDeviceSize;\r
179 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;\r
180 UINT8 MemoryDeviceSet;\r
181 EFI_MEMORY_ARRAY_TYPE MemoryType;\r
182 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;\r
183 UINT16 MemorySpeed;\r
184 EFI_MEMORY_STATE MemoryState;\r
185 UINT8 MemoryAttributes;\r
186} FRAMEWORK_MEMORY_ARRAY_LINK_DATA;\r
187\r
188typedef struct {\r
189 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;\r
190 EFI_MEMORY_ARRAY_USE MemoryArrayUse;\r
191 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
192 UINT32 MaximumMemoryCapacity;\r
193 UINT16 NumberMemoryDevices;\r
194} FRAMEWORK_MEMORY_ARRAY_LOCATION_DATA;\r
195\r
196//\r
197// Global variables\r
198//\r
199extern SMBIOS_CONVERSION_TABLE_ENTRY mConversionTable[];\r
200extern SMBIOS_TYPE_INFO_TABLE_ENTRY mTypeInfoTable[];\r
201extern LIST_ENTRY mStructureList;\r
202\r
203//\r
204// Function Prototypes\r
205//\r
206/**\r
207 Smbios data filter function. This function is invoked when there is data records\r
208 available in the Data Hub. \r
209\r
210 @param Event The event that is signaled.\r
211 @param Context not used here.\r
212**/\r
213VOID\r
214EFIAPI\r
215SmbiosDataFilter (\r
216 IN EFI_EVENT Event,\r
217 IN VOID *Context\r
218 );\r
219\r
220//\r
221// Function prototypes\r
222//\r
223/**\r
224 Process a datahub's record and find corresponding translation way to translate\r
225 to SMBIOS record.\r
226 \r
227 @param Record Point to datahub record.\r
228**/\r
229VOID\r
230SmbiosProcessDataRecord (\r
231 IN EFI_DATA_RECORD_HEADER *Record\r
26a76fbc 232 );\r
024b1029 233\r
234/**\r
235 Calculate the minimal length for a SMBIOS type. This length maybe not equal\r
236 to sizeof (SMBIOS_RECORD_STRUCTURE), but defined in conformance chapter in SMBIOS specification.\r
237 \r
238 @param Type SMBIOS's type.\r
239 \r
240 @return the minimal length of a smbios record.\r
241**/\r
242UINT32\r
243SmbiosGetTypeMinimalLength (\r
244 IN UINT8 Type\r
26a76fbc 245 );\r
024b1029 246\r
247/**\r
248 Enlarge the structure buffer of a structure node in SMBIOS database.\r
249 The function maybe lead the structure pointer for SMBIOS record changed.\r
250 \r
251 @param StructureNode The structure node whose structure buffer is to be enlarged.\r
252 @param NewLength The new length of SMBIOS record which does not include unformat area.\r
253 @param OldBufferSize The old size of SMBIOS record buffer.\r
bd1a4d18 254 @param NewBufferSize The new size is targeted for enlarged.\r
024b1029 255 \r
256 @retval EFI_OUT_OF_RESOURCES No more memory to allocate new record\r
257 @retval EFI_SUCCESS Success to enlarge the record buffer size.\r
258**/\r
259EFI_STATUS\r
260SmbiosEnlargeStructureBuffer (\r
261 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
262 UINT8 NewLength,\r
263 UINTN OldBufferSize,\r
264 UINTN NewBufferSize\r
265 );\r
266\r
2788ff51 267/**\r
268 Update the structure buffer of a structure node in SMBIOS database.\r
269 The function lead the structure pointer for SMBIOS record changed.\r
270 \r
271 @param StructureNode The structure node whose structure buffer is to be enlarged.\r
272 @param NewRecord The new SMBIOS record.\r
273 \r
274**/\r
275VOID\r
276SmbiosUpdateStructureBuffer (\r
277 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
278 IN EFI_SMBIOS_TABLE_HEADER *NewRecord\r
279 );\r
280\r
024b1029 281/**\r
26a76fbc
LG
282 Fill a standard Smbios string field. \r
283 \r
284 This function will convert the unicode string to single byte chars, and only\r
285 English language is supported.\r
024b1029 286 This function changes the Structure pointer value of the structure node, \r
287 which should be noted by Caller.\r
288 \r
289 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
290 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
291 @param RecordData RecordData buffer will be filled.\r
292 @param RecordDataSize The size of RecordData buffer.\r
293 \r
294 @retval EFI_INVALID_PARAMETER RecordDataSize is too larger\r
295 @retval EFI_OUT_OF_RESOURCES No memory to allocate new buffer for string\r
296 @retval EFI_SUCCESS Sucess append string for a SMBIOS record.\r
297**/\r
298EFI_STATUS\r
299SmbiosFldString (\r
300 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
301 IN UINT32 Offset,\r
302 IN VOID *RecordData,\r
303 IN UINT32 RecordDataSize\r
26a76fbc 304 );\r
024b1029 305\r
306/**\r
307 Fill the inter link field for a SMBIOS recorder.\r
308 \r
309 Some SMBIOS recorder need to reference the handle of another SMBIOS record. But\r
310 maybe another SMBIOS record has not been added, so put the InterLink request into\r
311 a linked list and the interlink will be fixedup when a new SMBIOS record is added.\r
312 \r
313 @param StructureNode Point to SMBIOS_STRUCTURE_NODE which reference another record's handle\r
314 @param LinkSmbiosNodeOffset The offset in this record for holding the handle of another SMBIOS record\r
315 @param LinkSmbiosType The type of SMBIOS record want to be linked.\r
316 @param InterLink Point to EFI_INTER_LINK_DATA will be put linked list.\r
317 @param SubClassGuid The guid of subclass for linked SMBIOS record.\r
318 \r
319 @retval EFI_SUCESS The linked record is found and no need fixup in future.\r
320 @retval !EFI_SUCESS The linked record can not be found and InterLink is put a fixing-p linked list.\r
321**/\r
322EFI_STATUS\r
323SmbiosFldInterLink (\r
324 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
325 IN UINT16 LinkSmbiosNodeOffset,\r
326 IN UINT8 LinkSmbiosType,\r
327 IN EFI_INTER_LINK_DATA *InterLink,\r
328 IN EFI_GUID *SubClassGuid\r
26a76fbc 329 );\r
024b1029 330\r
331/**\r
332 Find a handle that matches the Link Data and the target Smbios type.\r
333 \r
334 @param TargetType the Smbios type\r
335 @param SubClass the SubClass\r
336 @param LinkData Specifies Instance, SubInstance and ProducerName\r
337 @param Handle the HandleNum found \r
338 \r
339 @retval EFI_NOT_FOUND Can not find the record according to handle\r
340 @retval EFI_SUCCESS Success to find the handle\r
341**/\r
342EFI_STATUS\r
343SmbiosFindHandle (\r
344 IN UINT8 TargetType,\r
345 IN EFI_GUID *SubClass,\r
346 IN EFI_INTER_LINK_DATA *LinkData,\r
347 IN OUT UINT16 *HandleNum\r
26a76fbc 348 );\r
024b1029 349\r
26a76fbc
LG
350/**\r
351 Field Filling Function. Transform an EFI_EXP_BASE10_DATA to a word, with 'Mega'\r
352 as the unit.\r
353 \r
354 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
355 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
356 @param RecordData RecordData buffer will be filled.\r
357 @param RecordDataSize The size of RecordData buffer.\r
358 \r
359 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
360 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
361**/\r
024b1029 362EFI_STATUS\r
363SmbiosFldBase10ToWordWithMega (\r
364 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
365 IN UINT32 Offset,\r
366 IN VOID *RecordData,\r
367 IN UINT32 RecordDataSize\r
26a76fbc 368 );\r
024b1029 369\r
26a76fbc
LG
370/**\r
371 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 'Kilo'\r
372 as the unit. Granularity implemented for Cache Size.\r
373 \r
374 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
375 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
376 @param RecordData RecordData buffer will be filled.\r
377 @param RecordDataSize The size of RecordData buffer.\r
378 \r
379 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
380 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
381**/\r
024b1029 382EFI_STATUS\r
383SmbiosFldBase2ToWordWithKilo (\r
384 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
385 IN UINT32 Offset,\r
386 IN VOID *RecordData,\r
387 IN UINT32 RecordDataSize\r
26a76fbc 388 );\r
024b1029 389\r
26a76fbc
LG
390/**\r
391 Field Filling Function: truncate record data to byte and fill in the\r
392 field as indicated by Offset.\r
393 \r
394 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
395 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
396 @param RecordData RecordData buffer will be filled.\r
397 @param RecordDataSize The size of RecordData buffer.\r
398 \r
399 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
400 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
401**/\r
024b1029 402EFI_STATUS\r
403SmbiosFldTruncateToByte (\r
404 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
405 IN UINT32 Offset,\r
406 IN VOID *RecordData,\r
407 IN UINT32 RecordDataSize\r
26a76fbc 408 );\r
024b1029 409\r
26a76fbc
LG
410/**\r
411 Field Filling Function for Processor SubClass record type 6 -- ProcessorID.\r
412 Offset is mandatory.\r
413 \r
414 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
415 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
416 @param RecordData RecordData buffer will be filled.\r
417 @param RecordDataSize The size of RecordData buffer.\r
418 \r
419 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
420**/\r
024b1029 421EFI_STATUS\r
422SmbiosFldProcessorType6 (\r
423 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
424 IN UINT32 Offset,\r
425 IN VOID *RecordData,\r
426 IN UINT32 RecordDataSize\r
26a76fbc 427 );\r
024b1029 428\r
26a76fbc
LG
429/**\r
430 Field Filling Function for Processor SubClass record type 9 -- Voltage.\r
431 Offset is mandatory.\r
432 \r
433 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
434 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
435 @param RecordData RecordData buffer will be filled.\r
436 @param RecordDataSize The size of RecordData buffer.\r
437 \r
438 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
439**/\r
024b1029 440EFI_STATUS\r
441SmbiosFldProcessorType9 (\r
442 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
443 IN UINT32 Offset,\r
444 IN VOID *RecordData,\r
445 IN UINT32 RecordDataSize\r
26a76fbc 446 );\r
024b1029 447\r
26a76fbc
LG
448/**\r
449 Field Filling Function for Processor SubClass record type 17 -- Cache association.\r
450 \r
451 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
452 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
453 @param RecordData RecordData buffer will be filled.\r
454 @param RecordDataSize The size of RecordData buffer.\r
455 \r
456 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
457**/\r
024b1029 458EFI_STATUS\r
459SmbiosFldProcessorType17 (\r
460 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
461 IN UINT32 Offset,\r
462 IN VOID *RecordData,\r
463 IN UINT32 RecordDataSize\r
26a76fbc 464 );\r
024b1029 465\r
26a76fbc
LG
466/**\r
467 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a word, with 10exp-9\r
468 as the unit.\r
469 \r
470 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
471 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
472 @param RecordData RecordData buffer will be filled.\r
473 @param RecordDataSize The size of RecordData buffer.\r
474 \r
475 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
476 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
477**/\r
024b1029 478EFI_STATUS\r
479SmbiosFldBase10ToByteWithNano (\r
480 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
481 IN UINT32 Offset,\r
482 IN VOID *RecordData,\r
483 IN UINT32 RecordDataSize\r
26a76fbc 484 );\r
024b1029 485\r
26a76fbc
LG
486/**\r
487 Field Filling Function: truncate record data to byte and fill in the\r
488 field as indicated by Offset.\r
489 \r
490 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
491 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
492 @param RecordData RecordData buffer will be filled.\r
493 @param RecordDataSize The size of RecordData buffer.\r
494 \r
495 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
496 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
497**/\r
024b1029 498EFI_STATUS\r
499SmbiosFldTruncateToWord (\r
500 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
501 IN UINT32 Offset,\r
502 IN VOID *RecordData,\r
503 IN UINT32 RecordDataSize\r
26a76fbc
LG
504 );\r
505\r
506/**\r
507 Field Filling Function for Cache SubClass record type 10 -- Cache Config.\r
508 Offset is mandatory\r
024b1029 509\r
26a76fbc
LG
510 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
511 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
512 @param RecordData RecordData buffer will be filled.\r
513 @param RecordDataSize The size of RecordData buffer.\r
514 \r
515 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
516**/\r
024b1029 517EFI_STATUS\r
518SmbiosFldCacheType10 (\r
519 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
520 IN UINT32 Offset,\r
521 IN VOID *RecordData,\r
522 IN UINT32 RecordDataSize\r
26a76fbc 523 );\r
024b1029 524\r
26a76fbc
LG
525/**\r
526 Check if OEM structure has included 2 trailing 0s in data record.\r
527 \r
528 @param RecordData Point to record data will be checked.\r
529 @param RecordDataSize The size of record data.\r
530 \r
531 @retval 0 2 trailing 0s exist in unformatted section\r
532 @retval 1 1 trailing 0 exists at the end of unformatted section\r
533 @retval -1 There is no 0 at the end of unformatted section\r
534**/\r
024b1029 535INT8\r
536SmbiosCheckTrailingZero (\r
537 IN VOID *RecordData,\r
538 IN UINT32 RecordDataSize\r
26a76fbc 539 );\r
024b1029 540\r
26a76fbc
LG
541/**\r
542 Field Filling Function for Cache SubClass record type 5&6 -- Cache SRAM type.\r
543 Offset is mandatory\r
544 \r
545 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
546 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
547 @param RecordData RecordData buffer will be filled.\r
548 @param RecordDataSize The size of RecordData buffer.\r
549 \r
550 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
551**/\r
024b1029 552EFI_STATUS\r
553SmbiosFldCacheType5 (\r
554 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
555 IN UINT32 Offset,\r
556 IN VOID *RecordData,\r
557 IN UINT32 RecordDataSize\r
26a76fbc 558 );\r
024b1029 559\r
26a76fbc
LG
560/**\r
561 Field Filling Function for Memory SubClass record type 2 -- Physical Memory\r
562 Array.\r
563 \r
564 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
565 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
566 @param RecordData RecordData buffer will be filled.\r
567 @param RecordDataSize The size of RecordData buffer.\r
568 \r
569 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
570**/\r
024b1029 571EFI_STATUS\r
572SmbiosFldMemoryType2 (\r
573 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
574 IN UINT32 Offset,\r
575 IN VOID *RecordData,\r
576 IN UINT32 RecordDataSize\r
26a76fbc 577 );\r
024b1029 578\r
26a76fbc
LG
579/**\r
580 Field Filling Function for Memory SubClass record type 3 -\r
581 - Memory Device: SMBIOS Type 17\r
582 \r
583 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
584 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
585 @param RecordData RecordData buffer will be filled.\r
586 @param RecordDataSize The size of RecordData buffer.\r
587 \r
588 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
589**/\r
024b1029 590EFI_STATUS\r
591SmbiosFldMemoryType3 (\r
592 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
593 IN UINT32 Offset,\r
594 IN VOID *RecordData,\r
595 IN UINT32 RecordDataSize\r
26a76fbc 596 );\r
024b1029 597\r
26a76fbc
LG
598/**\r
599 Field Filling Function for Memory SubClass record type 4\r
600 -- Memory Array Mapped Address: SMBIOS Type 19\r
601 \r
602 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
603 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
604 @param RecordData RecordData buffer will be filled.\r
605 @param RecordDataSize The size of RecordData buffer.\r
606 \r
607 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
608**/\r
024b1029 609EFI_STATUS\r
610SmbiosFldMemoryType4 (\r
611 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
612 IN UINT32 Offset,\r
613 IN VOID *RecordData,\r
614 IN UINT32 RecordDataSize\r
26a76fbc 615 );\r
024b1029 616\r
26a76fbc
LG
617/**\r
618 Field Filling Function for Memory SubClass record type 5\r
619 -- Memory Device Mapped Address: SMBIOS Type 20\r
620 \r
621 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
622 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
623 @param RecordData RecordData buffer will be filled.\r
624 @param RecordDataSize The size of RecordData buffer.\r
625 \r
626 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
627**/\r
024b1029 628EFI_STATUS\r
629SmbiosFldMemoryType5 (\r
630 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
631 IN UINT32 Offset,\r
632 IN VOID *RecordData,\r
633 IN UINT32 RecordDataSize\r
26a76fbc 634 );\r
024b1029 635\r
26a76fbc
LG
636/**\r
637 Field Filling Function for Memory SubClass record type 6\r
638 -- Memory Channel Type: SMBIOS Type 37\r
639 \r
640 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
641 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
642 @param RecordData RecordData buffer will be filled.\r
643 @param RecordDataSize The size of RecordData buffer.\r
644 \r
645 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
646**/\r
024b1029 647EFI_STATUS\r
648SmbiosFldMemoryType6 (\r
649 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
650 IN UINT32 Offset,\r
651 IN VOID *RecordData,\r
652 IN UINT32 RecordDataSize\r
26a76fbc 653 );\r
024b1029 654\r
26a76fbc
LG
655/**\r
656 Field Filling Function for Memory SubClass record type 7\r
657 -- Memory Channel Device: SMBIOS Type 37\r
658 \r
659 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
660 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
661 @param RecordData RecordData buffer will be filled.\r
662 @param RecordDataSize The size of RecordData buffer.\r
663 \r
664 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
665**/\r
024b1029 666EFI_STATUS\r
667SmbiosFldMemoryType7 (\r
668 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
669 IN UINT32 Offset,\r
670 IN VOID *RecordData,\r
671 IN UINT32 RecordDataSize\r
26a76fbc 672 );\r
024b1029 673\r
26a76fbc
LG
674/**\r
675 Field Filling Function for Memory SubClass record type 8\r
676 -- Memory Controller information: SMBIOS Type 5\r
677 \r
678 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
679 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
680 @param RecordData RecordData buffer will be filled.\r
681 @param RecordDataSize The size of RecordData buffer.\r
682 \r
683 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
684**/\r
024b1029 685EFI_STATUS\r
686SmbiosFldMemoryType8 (\r
687 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
688 IN UINT32 Offset,\r
689 IN VOID *RecordData,\r
690 IN UINT32 RecordDataSize\r
26a76fbc 691 );\r
024b1029 692\r
26a76fbc
LG
693/**\r
694 Field Filling Function for Memory SubClass record type \r
695 -- Memory 32 Bit Error Information: SMBIOS Type 18\r
696 \r
697 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
698 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
699 @param RecordData RecordData buffer will be filled.\r
700 @param RecordDataSize The size of RecordData buffer.\r
701 \r
702 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
703**/\r
024b1029 704EFI_STATUS\r
705SmbiosFldMemoryType9 (\r
706 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
707 IN UINT32 Offset,\r
708 IN VOID *RecordData,\r
709 IN UINT32 RecordDataSize\r
26a76fbc 710 );\r
024b1029 711\r
26a76fbc
LG
712/**\r
713 Field Filling Function for Memory SubClass record type \r
714 -- Memory 64 Bit Error Information: SMBIOS Type 33\r
715 \r
716 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
717 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
718 @param RecordData RecordData buffer will be filled.\r
719 @param RecordDataSize The size of RecordData buffer.\r
720 \r
721 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
722**/\r
024b1029 723EFI_STATUS\r
724SmbiosFldMemoryType10 (\r
725 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
726 IN UINT32 Offset,\r
727 IN VOID *RecordData,\r
728 IN UINT32 RecordDataSize\r
26a76fbc 729 );\r
024b1029 730\r
26a76fbc
LG
731/**\r
732 Field Filling Function for Misc SubClass record type 0 -- Bios Information.\r
733 \r
734 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
735 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
736 @param RecordData RecordData buffer will be filled.\r
737 @param RecordDataSize The size of RecordData buffer.\r
738 \r
739 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
740**/\r
024b1029 741EFI_STATUS\r
742SmbiosFldMiscType0 (\r
743 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
744 IN UINT32 Offset,\r
745 IN VOID *RecordData,\r
746 IN UINT32 RecordDataSize\r
26a76fbc 747 );\r
024b1029 748\r
26a76fbc
LG
749/**\r
750 Field Filling Function. Transform an EFI_EXP_BASE2_DATA to a byte, with '64k'\r
751 as the unit.\r
752 \r
753 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
754 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
755 @param RecordData RecordData buffer will be filled.\r
756 @param RecordDataSize The size of RecordData buffer.\r
757 \r
758 @retval EFI_INVALID_PARAMETER RecordDataSize is invalid. \r
759 @retval EFI_SUCCESS RecordData is successed to be filled into given SMBIOS record.\r
760**/\r
024b1029 761EFI_STATUS\r
762SmbiosFldBase2ToByteWith64K (\r
763 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
764 IN UINT32 Offset,\r
765 IN VOID *RecordData,\r
766 IN UINT32 RecordDataSize\r
26a76fbc 767 );\r
024b1029 768\r
26a76fbc
LG
769/**\r
770 Field Filling Function for Misc SubClass record type 1 -- System Information.\r
771 \r
772 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
773 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
774 @param RecordData RecordData buffer will be filled.\r
775 @param RecordDataSize The size of RecordData buffer.\r
776 \r
777 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
778**/\r
024b1029 779EFI_STATUS\r
780SmbiosFldMiscType1 (\r
781 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
782 IN UINT32 Offset,\r
783 IN VOID *RecordData,\r
784 IN UINT32 RecordDataSize\r
26a76fbc 785 );\r
024b1029 786\r
26a76fbc
LG
787/**\r
788 Field Filling Function for record type 2 -- Base Board Manufacture.\r
789 \r
790 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
791 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
792 @param RecordData RecordData buffer will be filled.\r
793 @param RecordDataSize The size of RecordData buffer.\r
794 \r
795 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
796**/\r
024b1029 797EFI_STATUS\r
798SmbiosFldMiscType2 (\r
799 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
800 IN UINT32 Offset,\r
801 IN VOID *RecordData,\r
802 IN UINT32 RecordDataSize\r
26a76fbc 803 );\r
024b1029 804\r
26a76fbc
LG
805/**\r
806 Field Filling Function for Misc SubClass record type 3 -\r
807 - System Enclosure or Chassis.\r
808 \r
809 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
810 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
811 @param RecordData RecordData buffer will be filled.\r
812 @param RecordDataSize The size of RecordData buffer.\r
813 \r
814 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
815**/\r
024b1029 816EFI_STATUS\r
817SmbiosFldMiscType3 (\r
818 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
819 IN UINT32 Offset,\r
820 IN VOID *RecordData,\r
821 IN UINT32 RecordDataSize\r
26a76fbc 822 );\r
024b1029 823\r
26a76fbc
LG
824/**\r
825 Field Filling Function for Misc SubClass record type 8 -- Port Connector.\r
826 \r
827 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
828 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
829 @param RecordData RecordData buffer will be filled.\r
830 @param RecordDataSize The size of RecordData buffer.\r
831 \r
832 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
833**/\r
024b1029 834EFI_STATUS\r
835SmbiosFldMiscType8 (\r
836 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
837 IN UINT32 Offset,\r
838 IN VOID *RecordData,\r
839 IN UINT32 RecordDataSize\r
26a76fbc 840 );\r
024b1029 841\r
26a76fbc
LG
842/**\r
843 Field Filling Function for Misc SubClass record type 9 -- System slot.\r
844 \r
845 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
846 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
847 @param RecordData RecordData buffer will be filled.\r
848 @param RecordDataSize The size of RecordData buffer.\r
849 \r
850 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
851**/\r
024b1029 852EFI_STATUS\r
853SmbiosFldMiscType9 (\r
854 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
855 IN UINT32 Offset,\r
856 IN VOID *RecordData,\r
857 IN UINT32 RecordDataSize\r
26a76fbc 858 );\r
024b1029 859\r
26a76fbc
LG
860/**\r
861 Field Filling Function for Misc SubClass record type 10 - Onboard Device.\r
862 \r
863 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
864 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
865 @param RecordData RecordData buffer will be filled.\r
866 @param RecordDataSize The size of RecordData buffer.\r
867 \r
868 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
869**/\r
024b1029 870EFI_STATUS\r
871SmbiosFldMiscType10 (\r
872 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
873 IN UINT32 Offset,\r
874 IN VOID *RecordData,\r
875 IN UINT32 RecordDataSize\r
26a76fbc 876 );\r
024b1029 877\r
26a76fbc
LG
878/**\r
879 Field Filling Function for Misc SubClass record type 11 - OEM Strings.\r
880 \r
881 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
882 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
883 @param RecordData RecordData buffer will be filled.\r
884 @param RecordDataSize The size of RecordData buffer.\r
885 \r
886 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
887**/\r
024b1029 888EFI_STATUS\r
889SmbiosFldMiscType11 (\r
890 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
891 IN UINT32 Offset,\r
892 IN VOID *RecordData,\r
893 IN UINT32 RecordDataSize\r
26a76fbc 894 );\r
024b1029 895\r
26a76fbc
LG
896/**\r
897 Field Filling Function for Misc SubClass record type 12 - System Options.\r
898 \r
899 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
900 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
901 @param RecordData RecordData buffer will be filled.\r
902 @param RecordDataSize The size of RecordData buffer.\r
903 \r
904 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
905**/\r
024b1029 906EFI_STATUS\r
907SmbiosFldMiscType12 (\r
908 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
909 IN UINT32 Offset,\r
910 IN VOID *RecordData,\r
911 IN UINT32 RecordDataSize\r
26a76fbc 912 );\r
024b1029 913\r
26a76fbc
LG
914/**\r
915 Field Filling Function for Misc SubClass record type 13 - BIOS Language.\r
916 \r
917 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
918 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
919 @param RecordData RecordData buffer will be filled.\r
920 @param RecordDataSize The size of RecordData buffer.\r
921 \r
922 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
923**/\r
024b1029 924EFI_STATUS\r
925SmbiosFldMiscType13 (\r
926 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
927 IN UINT32 Offset,\r
928 IN VOID *RecordData,\r
929 IN UINT32 RecordDataSize\r
26a76fbc 930 );\r
024b1029 931\r
26a76fbc
LG
932/**\r
933 Field Filling Function for Misc SubClass record type 14 - System Language String\r
934 Current solution assumes that EFI_MISC_SYSTEM_LANGUAGE_STRINGs are logged with\r
935 their LanguageId having ascending orders.\r
936 \r
937 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
938 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
939 @param RecordData RecordData buffer will be filled.\r
940 @param RecordDataSize The size of RecordData buffer.\r
941 \r
942 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
943**/\r
024b1029 944EFI_STATUS\r
945SmbiosFldMiscType14 (\r
946 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
947 IN UINT32 Offset,\r
948 IN VOID *RecordData,\r
949 IN UINT32 RecordDataSize\r
26a76fbc 950 );\r
024b1029 951\r
26a76fbc
LG
952/**\r
953 Field Filling Function for Misc SubClass record type 15 -- System Event Log.\r
954 \r
955 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
956 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
957 @param RecordData RecordData buffer will be filled.\r
958 @param RecordDataSize The size of RecordData buffer.\r
959 \r
960 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
961**/\r
024b1029 962EFI_STATUS\r
963SmbiosFldMiscType15 (\r
964 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
965 IN UINT32 Offset,\r
966 IN VOID *RecordData,\r
967 IN UINT32 RecordDataSize\r
26a76fbc 968 );\r
024b1029 969\r
26a76fbc
LG
970/**\r
971 Field Filling Function for Misc SubClass record type 21 - Pointing Device.\r
972 \r
973 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
974 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
975 @param RecordData RecordData buffer will be filled.\r
976 @param RecordDataSize The size of RecordData buffer.\r
977 \r
978 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
979**/\r
024b1029 980EFI_STATUS\r
981SmbiosFldMiscType21 (\r
982 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
983 IN UINT32 Offset,\r
984 IN VOID *RecordData,\r
985 IN UINT32 RecordDataSize\r
26a76fbc 986 );\r
024b1029 987\r
988\r
26a76fbc
LG
989/**\r
990 Field Filling Function for Misc SubClass record type 32 -- System Boot Information.\r
991 \r
992 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
993 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
994 @param RecordData RecordData buffer will be filled.\r
995 @param RecordDataSize The size of RecordData buffer.\r
996 \r
997 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
998**/\r
024b1029 999EFI_STATUS\r
1000SmbiosFldMiscType32 (\r
1001 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1002 IN UINT32 Offset,\r
1003 IN VOID *RecordData,\r
1004 IN UINT32 RecordDataSize\r
26a76fbc 1005 );\r
024b1029 1006\r
26a76fbc
LG
1007/**\r
1008 Field Filling Function for Misc SubClass record type 38 -- IPMI device info.\r
1009 \r
1010 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1011 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1012 @param RecordData RecordData buffer will be filled.\r
1013 @param RecordDataSize The size of RecordData buffer.\r
1014 \r
1015 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1016**/\r
024b1029 1017EFI_STATUS\r
1018SmbiosFldMiscType38 (\r
1019 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1020 IN UINT32 Offset,\r
1021 IN VOID *RecordData,\r
1022 IN UINT32 RecordDataSize\r
1023 );\r
1024\r
26a76fbc
LG
1025/**\r
1026 Field Filling Function for Misc SubClass record type 0x80-0xFF -- OEM.\r
1027 \r
1028 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1029 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1030 @param RecordData RecordData buffer will be filled.\r
1031 @param RecordDataSize The size of RecordData buffer.\r
1032 \r
1033 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1034**/\r
024b1029 1035EFI_STATUS\r
1036SmbiosFldMiscTypeOEM (\r
1037 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1038 IN UINT32 Offset,\r
1039 IN VOID *RecordData,\r
1040 IN UINT32 RecordDataSize\r
26a76fbc 1041 );\r
024b1029 1042\r
26a76fbc
LG
1043/**\r
1044 Field Filling Function for Memory SubClass record type 3 -\r
1045 - Memory Device: SMBIOS Type 6\r
1046 \r
1047 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1048 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1049 @param RecordData RecordData buffer will be filled.\r
1050 @param RecordDataSize The size of RecordData buffer.\r
1051 \r
1052 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1053**/\r
024b1029 1054EFI_STATUS\r
1055SmbiosFldSMBIOSType6 (\r
1056 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
26a76fbc 1057 IN UINT32 Offset,\r
024b1029 1058 IN VOID *RecordData,\r
1059 IN UINT32 RecordDataSize\r
26a76fbc 1060 );\r
024b1029 1061\r
26a76fbc
LG
1062/**\r
1063 Field Filling Function for Misc SubClass record type 22 - Portable Battery.\r
1064 \r
1065 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1066 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1067 @param RecordData RecordData buffer will be filled.\r
1068 @param RecordDataSize The size of RecordData buffer.\r
1069 \r
1070 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1071**/\r
024b1029 1072EFI_STATUS\r
1073SmbiosFldMiscType22 (\r
1074 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1075 IN UINT32 Offset,\r
1076 IN VOID *RecordData,\r
1077 IN UINT32 RecordDataSize\r
26a76fbc 1078 );\r
024b1029 1079\r
26a76fbc
LG
1080/**\r
1081 Field Filling Function for Misc SubClass record type 22 - Portable Battery.\r
1082 \r
1083 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1084 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1085 @param RecordData RecordData buffer will be filled.\r
1086 @param RecordDataSize The size of RecordData buffer.\r
1087 \r
1088 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1089**/\r
024b1029 1090EFI_STATUS\r
1091SmbiosFldMiscType22 (\r
1092 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1093 IN UINT32 Offset,\r
1094 IN VOID *RecordData,\r
1095 IN UINT32 RecordDataSize\r
26a76fbc 1096 );\r
024b1029 1097\r
26a76fbc
LG
1098/**\r
1099 Field Filling Function for Misc SubClass record type 23 - System Reset.\r
1100 \r
1101 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1102 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1103 @param RecordData RecordData buffer will be filled.\r
1104 @param RecordDataSize The size of RecordData buffer.\r
1105 \r
1106 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1107**/\r
024b1029 1108EFI_STATUS\r
1109SmbiosFldMiscType23 (\r
1110 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1111 IN UINT32 Offset,\r
1112 IN VOID *RecordData,\r
1113 IN UINT32 RecordDataSize\r
26a76fbc 1114 );\r
024b1029 1115\r
26a76fbc
LG
1116/**\r
1117 Field Filling Function for Misc SubClass record type 24 - Hardware Security.\r
1118 \r
1119 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1120 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1121 @param RecordData RecordData buffer will be filled.\r
1122 @param RecordDataSize The size of RecordData buffer.\r
1123 \r
1124 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1125**/\r
024b1029 1126EFI_STATUS\r
1127SmbiosFldMiscType24 (\r
1128 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1129 IN UINT32 Offset,\r
1130 IN VOID *RecordData,\r
1131 IN UINT32 RecordDataSize\r
26a76fbc 1132 );\r
024b1029 1133\r
26a76fbc
LG
1134/**\r
1135 Field Filling Function for Misc SubClass record type 25 - System Power Controls.\r
1136 \r
1137 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1138 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1139 @param RecordData RecordData buffer will be filled.\r
1140 @param RecordDataSize The size of RecordData buffer.\r
1141 \r
1142 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1143**/\r
024b1029 1144EFI_STATUS\r
1145SmbiosFldMiscType25 (\r
1146 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1147 IN UINT32 Offset,\r
1148 IN VOID *RecordData,\r
1149 IN UINT32 RecordDataSize\r
26a76fbc 1150 );\r
024b1029 1151\r
26a76fbc
LG
1152/**\r
1153 Field Filling Function for Misc SubClass record type 26 - Voltage Probe.\r
1154 \r
1155 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1156 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1157 @param RecordData RecordData buffer will be filled.\r
1158 @param RecordDataSize The size of RecordData buffer.\r
1159 \r
1160 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1161**/\r
024b1029 1162EFI_STATUS\r
1163SmbiosFldMiscType26 (\r
1164 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1165 IN UINT32 Offset,\r
1166 IN VOID *RecordData,\r
1167 IN UINT32 RecordDataSize\r
26a76fbc 1168 );\r
024b1029 1169\r
26a76fbc
LG
1170/**\r
1171 Field Filling Function for Misc SubClass record type 27 - Cooling Device.\r
1172 \r
1173 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1174 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1175 @param RecordData RecordData buffer will be filled.\r
1176 @param RecordDataSize The size of RecordData buffer.\r
1177 \r
1178 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1179**/\r
024b1029 1180EFI_STATUS\r
1181SmbiosFldMiscType27 (\r
1182 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1183 IN UINT32 Offset,\r
1184 IN VOID *RecordData,\r
1185 IN UINT32 RecordDataSize\r
26a76fbc 1186 );\r
024b1029 1187\r
26a76fbc
LG
1188/**\r
1189 Field Filling Function for Misc SubClass record type 28 -- Temperature Probe.\r
1190 \r
1191 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1192 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1193 @param RecordData RecordData buffer will be filled.\r
1194 @param RecordDataSize The size of RecordData buffer.\r
1195 \r
1196 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1197**/\r
024b1029 1198EFI_STATUS\r
1199SmbiosFldMiscType28 (\r
1200 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1201 IN UINT32 Offset,\r
1202 IN VOID *RecordData,\r
1203 IN UINT32 RecordDataSize\r
26a76fbc 1204 );\r
024b1029 1205\r
26a76fbc
LG
1206/**\r
1207 Field Filling Function for Misc SubClass record type 29 -- Electrical Current Probe.\r
1208 \r
1209 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1210 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1211 @param RecordData RecordData buffer will be filled.\r
1212 @param RecordDataSize The size of RecordData buffer.\r
1213 \r
1214 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1215**/\r
024b1029 1216EFI_STATUS\r
1217SmbiosFldMiscType29 (\r
1218 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1219 IN UINT32 Offset,\r
1220 IN VOID *RecordData,\r
1221 IN UINT32 RecordDataSize\r
26a76fbc 1222 );\r
024b1029 1223\r
26a76fbc
LG
1224/**\r
1225 Field Filling Function for Misc SubClass record type 30 -- Out-of-Band Remote Access.\r
1226 \r
1227 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1228 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1229 @param RecordData RecordData buffer will be filled.\r
1230 @param RecordDataSize The size of RecordData buffer.\r
1231 \r
1232 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1233**/\r
024b1029 1234EFI_STATUS\r
1235SmbiosFldMiscType30 (\r
1236 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1237 IN UINT32 Offset,\r
1238 IN VOID *RecordData,\r
1239 IN UINT32 RecordDataSize\r
26a76fbc 1240 );\r
024b1029 1241\r
26a76fbc
LG
1242/**\r
1243 Field Filling Function for Misc SubClass record type 34 -- Management Device.\r
1244 \r
1245 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1246 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1247 @param RecordData RecordData buffer will be filled.\r
1248 @param RecordDataSize The size of RecordData buffer.\r
1249 \r
1250 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1251**/\r
024b1029 1252EFI_STATUS\r
1253SmbiosFldMiscType34 (\r
1254 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1255 IN UINT32 Offset,\r
1256 IN VOID *RecordData,\r
1257 IN UINT32 RecordDataSize\r
26a76fbc 1258 );\r
024b1029 1259\r
26a76fbc
LG
1260/**\r
1261 Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\r
1262 \r
1263 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1264 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1265 @param RecordData RecordData buffer will be filled.\r
1266 @param RecordDataSize The size of RecordData buffer.\r
1267 \r
1268 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1269**/\r
024b1029 1270EFI_STATUS\r
1271SmbiosFldMiscType36 (\r
1272 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1273 IN UINT32 Offset,\r
1274 IN VOID *RecordData,\r
1275 IN UINT32 RecordDataSize\r
26a76fbc 1276 );\r
024b1029 1277\r
26a76fbc
LG
1278/**\r
1279 Field Filling Function for Misc SubClass record type 38 -- IPMI device info.\r
1280 \r
1281 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1282 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1283 @param RecordData RecordData buffer will be filled.\r
1284 @param RecordDataSize The size of RecordData buffer.\r
1285 \r
1286 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1287**/\r
024b1029 1288EFI_STATUS\r
1289SmbiosFldMiscType38 (\r
1290 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1291 IN UINT32 Offset,\r
1292 IN VOID *RecordData,\r
1293 IN UINT32 RecordDataSize\r
26a76fbc 1294 );\r
024b1029 1295\r
26a76fbc
LG
1296/**\r
1297 Field Filling Function for Misc SubClass record type 39 -- Power supply.\r
1298 \r
1299 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1300 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1301 @param RecordData RecordData buffer will be filled.\r
1302 @param RecordDataSize The size of RecordData buffer.\r
1303 \r
1304 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1305**/\r
024b1029 1306EFI_STATUS\r
1307SmbiosFldMiscType39 (\r
1308 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1309 IN UINT32 Offset,\r
1310 IN VOID *RecordData,\r
1311 IN UINT32 RecordDataSize\r
26a76fbc 1312 );\r
024b1029 1313\r
26a76fbc
LG
1314/**\r
1315 Field Filling Function for Misc SubClass record type 127 - End-of-Table.\r
1316 \r
1317 @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
1318 @param Offset Offset of SMBIOS record which RecordData will be filled.\r
1319 @param RecordData RecordData buffer will be filled.\r
1320 @param RecordDataSize The size of RecordData buffer.\r
1321 \r
1322 @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
1323**/\r
024b1029 1324EFI_STATUS\r
1325SmbiosFldMiscType127 (\r
1326 IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
1327 IN UINT32 Offset,\r
1328 IN VOID *RecordData,\r
1329 IN UINT32 RecordDataSize\r
26a76fbc 1330 );\r
024b1029 1331 \r
26a76fbc
LG
1332/**\r
1333 Create a blank smbios record. The datahub record is only a field of smbios record.\r
1334 So before fill any field from datahub's record. A blank smbios record need to be \r
1335 created.\r
1336 \r
1337 @param ProducerHandle The produce handle for a datahub record\r
1338 @param StructureNode Point to SMBIOS_STRUCTURE_NODE\r
1339 \r
1340 @retval EFI_OUT_OF_RESOURCES Fail to allocate memory for new blank SMBIOS record.\r
1341 @retval EFI_SUCCESS Success to create blank smbios record.\r
1342**/\r
024b1029 1343EFI_STATUS\r
1344SmbiosProtocolCreateRecord (\r
1345 IN EFI_HANDLE ProducerHandle, OPTIONAL\r
1346 IN SMBIOS_STRUCTURE_NODE *StructureNode\r
1347 );\r
1348 \r
26a76fbc
LG
1349/**\r
1350 Get pointer of EFI_SMBIOS_PROTOCOL.\r
1351 \r
1352 @return pointer of EFI_SMBIOS_PROTOCOL.\r
1353**/\r
024b1029 1354EFI_SMBIOS_PROTOCOL*\r
1355GetSmbiosProtocol (\r
1356 VOID\r
1357 );\r
1358 \r
26a76fbc
LG
1359/**\r
1360 Get pointer of a SMBIOS record's buffer according to its handle.\r
1361 \r
1362 @param Handle The handle of SMBIOS record want to be searched.\r
1363 @param Type The type of SMBIOS record want to be searched.\r
1364 @param ProducerHandle The producer handle of SMBIOS record.\r
1365 \r
1366 @return EFI_SMBIOS_TABLE_HEADER Point to a SMBIOS record's buffer.\r
1367**/ \r
024b1029 1368EFI_SMBIOS_TABLE_HEADER*\r
1369GetSmbiosBufferFromHandle (\r
1370 IN EFI_SMBIOS_HANDLE Handle,\r
1371 IN EFI_SMBIOS_TYPE Type,\r
1372 IN EFI_HANDLE ProducerHandle OPTIONAL\r
1373 );\r
1374 \r
26a76fbc
LG
1375/**\r
1376\r
1377 Get the full size of smbios structure including optional strings that follow the formatted structure.\r
1378\r
1379 @param Head Pointer to the beginning of smbios structure.\r
1380 @param Size The returned size.\r
1381 @param NumberOfStrings The returned number of optional strings that follow the formatted structure.\r
1382\r
1383 @retval EFI_SUCCESS Size retured in Size.\r
1384 @retval EFI_INVALID_PARAMETER Input smbios structure mal-formed or Size is NULL.\r
1385 \r
1386**/\r
024b1029 1387EFI_STATUS\r
1388EFIAPI\r
1389GetSmbiosStructureSize (\r
1390 IN EFI_SMBIOS_TABLE_HEADER *Head,\r
1391 OUT UINT32 *Size,\r
1392 OUT UINT8 *NumberOfStrings\r
1393 );\r
1394 \r
1395#endif\r