]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / SmbiosDxe / SmbiosDxe.h
CommitLineData
310b04e6 1/** @file\r
2 This code supports the implementation of the Smbios protocol\r
d1102dba
LG
3\r
4Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
9d510e61 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
310b04e6 6\r
7**/\r
8\r
9#ifndef _SMBIOS_DXE_H_\r
10#define _SMBIOS_DXE_H_\r
11\r
12\r
13#include <PiDxe.h>\r
14\r
15#include <Protocol/Smbios.h>\r
16#include <IndustryStandard/SmBios.h>\r
17#include <Guid/EventGroup.h>\r
18#include <Guid/SmBios.h>\r
19#include <Library/DebugLib.h>\r
20#include <Library/UefiDriverEntryPoint.h>\r
21#include <Library/UefiLib.h>\r
22#include <Library/BaseLib.h>\r
23#include <Library/BaseMemoryLib.h>\r
24#include <Library/MemoryAllocationLib.h>\r
25#include <Library/UefiBootServicesTableLib.h>\r
9f7d5b46 26#include <Library/PcdLib.h>\r
310b04e6 27\r
28#define SMBIOS_INSTANCE_SIGNATURE SIGNATURE_32 ('S', 'B', 'i', 's')\r
29typedef struct {\r
30 UINT32 Signature;\r
31 EFI_HANDLE Handle;\r
32 //\r
33 // Produced protocol\r
34 //\r
35 EFI_SMBIOS_PROTOCOL Smbios;\r
36 //\r
37 // Updates to record list must be locked.\r
38 //\r
39 EFI_LOCK DataLock;\r
40 //\r
41 // List of EFI_SMBIOS_ENTRY structures.\r
42 //\r
43 LIST_ENTRY DataListHead;\r
44 //\r
45 // List of allocated SMBIOS handle.\r
46 //\r
47 LIST_ENTRY AllocatedHandleListHead;\r
48} SMBIOS_INSTANCE;\r
49\r
50#define SMBIOS_INSTANCE_FROM_THIS(this) CR (this, SMBIOS_INSTANCE, Smbios, SMBIOS_INSTANCE_SIGNATURE)\r
51\r
52//\r
53// SMBIOS record Header\r
54//\r
55// An SMBIOS internal Record is an EFI_SMBIOS_RECORD_HEADER followed by (RecordSize - HeaderSize) bytes of\r
56// data. The format of the data is defined by the SMBIOS spec.\r
57//\r
58//\r
59#define EFI_SMBIOS_RECORD_HEADER_VERSION 0x0100\r
60typedef struct {\r
61 UINT16 Version;\r
62 UINT16 HeaderSize;\r
63 UINTN RecordSize;\r
64 EFI_HANDLE ProducerHandle;\r
65 UINTN NumberOfStrings;\r
66} EFI_SMBIOS_RECORD_HEADER;\r
67\r
68\r
69//\r
70// Private data structure to contain the SMBIOS record. One record per\r
71// structure. SmbiosRecord is a copy of the data passed in and follows RecordHeader .\r
72//\r
73#define EFI_SMBIOS_ENTRY_SIGNATURE SIGNATURE_32 ('S', 'r', 'e', 'c')\r
74typedef struct {\r
75 UINT32 Signature;\r
76 LIST_ENTRY Link;\r
77 EFI_SMBIOS_RECORD_HEADER *RecordHeader;\r
78 UINTN RecordSize;\r
e63f3308
EL
79 //\r
80 // Indicate which table this record is added to.\r
81 //\r
82 BOOLEAN Smbios32BitTable;\r
83 BOOLEAN Smbios64BitTable;\r
310b04e6 84} EFI_SMBIOS_ENTRY;\r
85\r
86#define SMBIOS_ENTRY_FROM_LINK(link) CR (link, EFI_SMBIOS_ENTRY, Link, EFI_SMBIOS_ENTRY_SIGNATURE)\r
87\r
88//\r
89// Private data to contain the Smbios handle that already allocated.\r
90//\r
91#define SMBIOS_HANDLE_ENTRY_SIGNATURE SIGNATURE_32 ('S', 'h', 'r', 'd')\r
92\r
93typedef struct {\r
94 UINT32 Signature;\r
95 LIST_ENTRY Link;\r
96 //\r
97 // Filter driver will register what record guid filter should be used.\r
98 //\r
99 EFI_SMBIOS_HANDLE SmbiosHandle;\r
100\r
101} SMBIOS_HANDLE_ENTRY;\r
102\r
103#define SMBIOS_HANDLE_ENTRY_FROM_LINK(link) CR (link, SMBIOS_HANDLE_ENTRY, Link, SMBIOS_HANDLE_ENTRY_SIGNATURE)\r
104\r
105typedef struct {\r
106 EFI_SMBIOS_TABLE_HEADER Header;\r
107 UINT8 Tailing[2];\r
108} EFI_SMBIOS_TABLE_END_STRUCTURE;\r
109\r
0ddd8553 110/**\r
111 Create Smbios Table and installs the Smbios Table to the System Table.\r
d1102dba 112\r
e63f3308
EL
113 @param Smbios32BitTable The flag to update 32-bit table.\r
114 @param Smbios64BitTable The flag to update 64-bit table.\r
d1102dba 115\r
0ddd8553 116**/\r
117VOID\r
118EFIAPI\r
119SmbiosTableConstruction (\r
e63f3308
EL
120 BOOLEAN Smbios32BitTable,\r
121 BOOLEAN Smbios64BitTable\r
0ddd8553 122 );\r
123\r
310b04e6 124#endif\r