Implement AcGetSMBiosTable() and AcGetSMBios3Table() routines
Some checks failed
Builds / ExectOS (amd64) (push) Failing after 15s
Builds / ExectOS (i686) (push) Failing after 14s

This commit is contained in:
2024-02-02 22:10:51 +01:00
parent 4fa5b8f2a5
commit 1828acbc56
3 changed files with 107 additions and 0 deletions

View File

@@ -119,6 +119,70 @@ AcGetRsdpTable(OUT PVOID *AcpiTable)
return STATUS_EFI_SUCCESS;
}
/**
* Gets SMBIOS from EFI system configuration
*
* @param SmBiosTable
* Suplies a pointer to memory area where SMBIOS address will be stored.
*
* @return This routine returns a status code.
*
* @since XT 1.0
*/
XTCDECL
EFI_STATUS
AcGetSMBiosTable(OUT PVOID *SmBiosTable)
{
EFI_GUID SmBiosGuid = EFI_CONFIG_TABLE_SMBIOS_TABLE_GUID;
PSMBIOS_TABLE_HEADER SmBios;
EFI_STATUS Status;
/* Get SMBIOS table from system configuration tables */
Status = XtLdrProtocol->Util.GetConfigurationTable(&SmBiosGuid, (PVOID)&SmBios);
if(Status != STATUS_EFI_SUCCESS || AcpChecksumTable(SmBios, SmBios->Length) != 0)
{
/* SMBIOS not found or checksum mismatch */
*SmBiosTable = NULL;
return STATUS_EFI_NOT_FOUND;
}
/* SMBIOS found, return success */
*SmBiosTable = SmBios;
return STATUS_EFI_SUCCESS;
}
/**
* Gets SMBIOS3 from EFI system configuration
*
* @param SmBiosTable
* Suplies a pointer to memory area where SMBIOS3 address will be stored.
*
* @return This routine returns a status code.
*
* @since XT 1.0
*/
XTCDECL
EFI_STATUS
AcGetSMBios3Table(OUT PVOID *SmBiosTable)
{
EFI_GUID SmBios3Guid = EFI_CONFIG_TABLE_SMBIOS3_TABLE_GUID;
PSMBIOS3_TABLE_HEADER SmBios;
EFI_STATUS Status;
/* Get SMBIOS3 table from system configuration tables */
Status = XtLdrProtocol->Util.GetConfigurationTable(&SmBios3Guid, (PVOID)&SmBios);
if(Status != STATUS_EFI_SUCCESS || AcpChecksumTable(SmBios, SmBios->Length) != 0)
{
/* SMBIOS3 not found or checksum mismatch */
*SmBiosTable = NULL;
return STATUS_EFI_NOT_FOUND;
}
/* SMBIOS3 found, return success */
*SmBiosTable = SmBios;
return STATUS_EFI_SUCCESS;
}
/**
* Gets XSDP (ACPI 2.0) from EFI system configuration
*

View File

@@ -26,6 +26,14 @@ XTCDECL
EFI_STATUS
AcGetRsdpTable(OUT PVOID *AcpiTable);
XTCDECL
EFI_STATUS
AcGetSMBiosTable(OUT PVOID *SmBiosTable);
XTCDECL
EFI_STATUS
AcGetSMBios3Table(OUT PVOID *SmBiosTable);
XTCDECL
EFI_STATUS
AcGetXsdpTable(OUT PVOID *AcpiTable);