mirror of https://github.com/acidanthera/audk.git
89 lines
2.3 KiB
C
89 lines
2.3 KiB
C
|
/** @file
|
||
|
This driver parses the mSmbiosMiscDataTable structure and reports
|
||
|
any generated data using SMBIOS protocol.
|
||
|
|
||
|
Copyright (c) 2013-2015 Intel Corporation.
|
||
|
|
||
|
This program and the accompanying materials
|
||
|
are licensed and made available under the terms and conditions of the BSD License
|
||
|
which accompanies this distribution. The full text of the license may be found at
|
||
|
http://opensource.org/licenses/bsd-license.php
|
||
|
|
||
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||
|
|
||
|
|
||
|
**/
|
||
|
|
||
|
|
||
|
#include "CommonHeader.h"
|
||
|
|
||
|
#include "SmbiosMisc.h"
|
||
|
|
||
|
|
||
|
extern UINT8 SmbiosMiscStrings[];
|
||
|
EFI_HANDLE mImageHandle;
|
||
|
|
||
|
EFI_HII_HANDLE mHiiHandle;
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
Standard EFI driver point. This driver parses the mSmbiosMiscDataTable
|
||
|
structure and reports any generated data using SMBIOS protocol.
|
||
|
|
||
|
@param ImageHandle Handle for the image of this driver
|
||
|
@param SystemTable Pointer to the EFI System Table
|
||
|
|
||
|
@retval EFI_SUCCESS The data was successfully stored.
|
||
|
|
||
|
**/
|
||
|
EFI_STATUS
|
||
|
EFIAPI
|
||
|
SmbiosMiscEntryPoint(
|
||
|
IN EFI_HANDLE ImageHandle,
|
||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||
|
)
|
||
|
{
|
||
|
UINTN Index;
|
||
|
EFI_STATUS EfiStatus;
|
||
|
EFI_SMBIOS_PROTOCOL *Smbios;
|
||
|
|
||
|
|
||
|
mImageHandle = ImageHandle;
|
||
|
|
||
|
EfiStatus = gBS->LocateProtocol(&gEfiSmbiosProtocolGuid, NULL, (VOID**)&Smbios);
|
||
|
|
||
|
if (EFI_ERROR(EfiStatus)) {
|
||
|
DEBUG((EFI_D_ERROR, "Could not locate SMBIOS protocol. %r\n", EfiStatus));
|
||
|
return EfiStatus;
|
||
|
}
|
||
|
|
||
|
mHiiHandle = HiiAddPackages (
|
||
|
&gEfiCallerIdGuid,
|
||
|
mImageHandle,
|
||
|
SmbiosMiscStrings,
|
||
|
NULL
|
||
|
);
|
||
|
ASSERT (mHiiHandle != NULL);
|
||
|
|
||
|
for (Index = 0; Index < mSmbiosMiscDataTableEntries; ++Index) {
|
||
|
//
|
||
|
// If the entry have a function pointer, just log the data.
|
||
|
//
|
||
|
if (mSmbiosMiscDataTable[Index].Function != NULL) {
|
||
|
EfiStatus = (*mSmbiosMiscDataTable[Index].Function)(
|
||
|
mSmbiosMiscDataTable[Index].RecordData,
|
||
|
Smbios
|
||
|
);
|
||
|
|
||
|
if (EFI_ERROR(EfiStatus)) {
|
||
|
DEBUG((EFI_D_ERROR, "Misc smbios store error. Index=%d, ReturnStatus=%r\n", Index, EfiStatus));
|
||
|
return EfiStatus;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return EfiStatus;
|
||
|
}
|