2 This code supports the implementation of the Smbios protocol
4 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #define _SMBIOS_DXE_H_
15 #include <Protocol/Smbios.h>
16 #include <IndustryStandard/SmBios.h>
17 #include <Guid/EventGroup.h>
18 #include <Guid/SmBios.h>
19 #include <Library/DebugLib.h>
20 #include <Library/UefiDriverEntryPoint.h>
21 #include <Library/UefiLib.h>
22 #include <Library/BaseLib.h>
23 #include <Library/BaseMemoryLib.h>
24 #include <Library/MemoryAllocationLib.h>
25 #include <Library/UefiBootServicesTableLib.h>
26 #include <Library/PcdLib.h>
28 #define SMBIOS_INSTANCE_SIGNATURE SIGNATURE_32 ('S', 'B', 'i', 's')
35 EFI_SMBIOS_PROTOCOL Smbios
;
37 // Updates to record list must be locked.
41 // List of EFI_SMBIOS_ENTRY structures.
43 LIST_ENTRY DataListHead
;
45 // List of allocated SMBIOS handle.
47 LIST_ENTRY AllocatedHandleListHead
;
50 #define SMBIOS_INSTANCE_FROM_THIS(this) CR (this, SMBIOS_INSTANCE, Smbios, SMBIOS_INSTANCE_SIGNATURE)
53 // SMBIOS record Header
55 // An SMBIOS internal Record is an EFI_SMBIOS_RECORD_HEADER followed by (RecordSize - HeaderSize) bytes of
56 // data. The format of the data is defined by the SMBIOS spec.
59 #define EFI_SMBIOS_RECORD_HEADER_VERSION 0x0100
64 EFI_HANDLE ProducerHandle
;
65 UINTN NumberOfStrings
;
66 } EFI_SMBIOS_RECORD_HEADER
;
70 // Private data structure to contain the SMBIOS record. One record per
71 // structure. SmbiosRecord is a copy of the data passed in and follows RecordHeader .
73 #define EFI_SMBIOS_ENTRY_SIGNATURE SIGNATURE_32 ('S', 'r', 'e', 'c')
77 EFI_SMBIOS_RECORD_HEADER
*RecordHeader
;
80 // Indicate which table this record is added to.
82 BOOLEAN Smbios32BitTable
;
83 BOOLEAN Smbios64BitTable
;
86 #define SMBIOS_ENTRY_FROM_LINK(link) CR (link, EFI_SMBIOS_ENTRY, Link, EFI_SMBIOS_ENTRY_SIGNATURE)
89 // Private data to contain the Smbios handle that already allocated.
91 #define SMBIOS_HANDLE_ENTRY_SIGNATURE SIGNATURE_32 ('S', 'h', 'r', 'd')
97 // Filter driver will register what record guid filter should be used.
99 EFI_SMBIOS_HANDLE SmbiosHandle
;
101 } SMBIOS_HANDLE_ENTRY
;
103 #define SMBIOS_HANDLE_ENTRY_FROM_LINK(link) CR (link, SMBIOS_HANDLE_ENTRY, Link, SMBIOS_HANDLE_ENTRY_SIGNATURE)
106 EFI_SMBIOS_TABLE_HEADER Header
;
108 } EFI_SMBIOS_TABLE_END_STRUCTURE
;
111 Create Smbios Table and installs the Smbios Table to the System Table.
113 @param Smbios32BitTable The flag to update 32-bit table.
114 @param Smbios64BitTable The flag to update 64-bit table.
119 SmbiosTableConstruction (
120 BOOLEAN Smbios32BitTable
,
121 BOOLEAN Smbios64BitTable