48 if (Table->Table == NULL) {
51 TableSize = (UINT32)((UINT8 *)Table->CurrentStrPtr - Table->Table);
57 RequestedSize = TableSize +
Size;
58 if (RequestedSize > SMBIOS_TABLE_MAX_LENGTH) {
59 return EFI_OUT_OF_RESOURCES;
65 if (RequestedSize <= Table->AllocatedTableSize) {
69 RequestedSize = ALIGN_VALUE (RequestedSize, EFI_PAGE_SIZE);
70 if (RequestedSize > ALIGN_VALUE (SMBIOS_TABLE_MAX_LENGTH, EFI_PAGE_SIZE)) {
71 RequestedSize = ALIGN_VALUE (SMBIOS_TABLE_MAX_LENGTH, EFI_PAGE_SIZE);
74 NewTable = ReallocatePool (TableSize, RequestedSize, Table->Table);
75 if (NewTable == NULL) {
76 return EFI_OUT_OF_RESOURCES;
82 ZeroMem (NewTable + TableSize, RequestedSize - TableSize);
84 Table->CurrentPtr.Raw = NewTable + (Table->CurrentPtr.Raw - Table->Table);
85 Table->CurrentStrPtr = (CHAR8 *)NewTable + TableSize;
86 Table->Table = NewTable;
87 Table->AllocatedTableSize = RequestedSize;
145 if ( (Type == SMBIOS_TYPE_PROCESSOR_INFORMATION)
146 || (Type == SMBIOS_TYPE_CACHE_INFORMATION)
147 || (Type == SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION)
148 || (Type == SMBIOS_TYPE_SYSTEM_SLOTS)
149 || (Type == SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY)
150 || (Type == SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS)
151 || (Type == SMBIOS_TYPE_MEMORY_DEVICE)
152 || (Type == SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS))
154 Table->CurrentPtr.Standard.Hdr->Handle = Table->Handle++;
156 }
else if (Index != 1) {
158 return EFI_INVALID_PARAMETER;
162 case SMBIOS_TYPE_BIOS_INFORMATION:
165 case SMBIOS_TYPE_SYSTEM_INFORMATION:
168 case SMBIOS_TYPE_BASEBOARD_INFORMATION:
171 case SMBIOS_TYPE_SYSTEM_ENCLOSURE:
174 case SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION:
177 case SMBIOS_TYPE_MEMORY_MODULE_INFORMATON:
180 case SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION:
183 case SMBIOS_TYPE_OEM_STRINGS:
186 case SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS:
189 case SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION:
192 case SMBIOS_TYPE_GROUP_ASSOCIATIONS:
195 case SMBIOS_TYPE_SYSTEM_EVENT_LOG:
198 case SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION:
201 case SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE:
204 case SMBIOS_TYPE_PORTABLE_BATTERY:
207 case SMBIOS_TYPE_SYSTEM_RESET:
210 case SMBIOS_TYPE_HARDWARE_SECURITY:
213 case SMBIOS_TYPE_SYSTEM_POWER_CONTROLS:
216 case SMBIOS_TYPE_VOLTAGE_PROBE:
219 case SMBIOS_TYPE_COOLING_DEVICE:
222 case SMBIOS_TYPE_TEMPERATURE_PROBE:
225 case SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE:
228 case SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS:
231 case SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE:
234 case SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION:
237 case SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION:
240 case SMBIOS_TYPE_MANAGEMENT_DEVICE:
243 case SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT:
246 case SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA:
249 case SMBIOS_TYPE_MEMORY_CHANNEL:
252 case SMBIOS_TYPE_IPMI_DEVICE_INFORMATION:
255 case SMBIOS_TYPE_SYSTEM_POWER_SUPPLY:
258 case SMBIOS_TYPE_ADDITIONAL_INFORMATION:
261 case SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION:
264 case SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE:
267 case SMBIOS_TYPE_TPM_DEVICE:
270 case SMBIOS_TYPE_INACTIVE:
273 case SMBIOS_TYPE_END_OF_TABLE:
296 Table->CurrentPtr.Standard.Hdr->Handle = Table->Handle++;