X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkCompatibilityPkg%2FCompatibility%2FPiSmbiosRecordOnDataHubSmbiosRecordThunk%2FThunk.c;fp=EdkCompatibilityPkg%2FCompatibility%2FPiSmbiosRecordOnDataHubSmbiosRecordThunk%2FThunk.c;h=0000000000000000000000000000000000000000;hp=2c395f2300ac2f290990533a66c6ecffbcd30afe;hb=c455bc8c8d78ad51c24426a500914ea32504bf06;hpb=5bca07268acabe7f31407358e875ccf89cb5e386 diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.c b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.c deleted file mode 100644 index 2c395f2300..0000000000 --- a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.c +++ /dev/null @@ -1,160 +0,0 @@ -/** @file - Thunk driver's entry that install filter for DataRecord. - -Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.
-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 "Thunk.h" - -// -// Global variables -// -LIST_ENTRY mStructureList; - -/** - Entry Point of thunk driver. - - @param[in] ImageHandle Image handle of this driver. - @param[in] SystemTable Pointer to EFI system table. - - @retval EFI_SUCCESS The event handlers were registered. - @retval EFI_DEVICE_ERROR Failed to register the event handlers -**/ -EFI_STATUS -EFIAPI -ThunkEntry ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - EFI_DATA_HUB_PROTOCOL *DataHub; - EFI_EVENT FilterEvent; - - Status = gBS->LocateProtocol (&gEfiDataHubProtocolGuid, NULL, (VOID**) &DataHub); - ASSERT_EFI_ERROR (Status); - ASSERT (DataHub != NULL); - - InitializeListHead (&mStructureList); - - // - // Register SmBios Data Filter Function. - // This function is notified at TPL_CALLBACK. - // - Status = gBS->CreateEvent ( - EVT_NOTIFY_SIGNAL, - TPL_CALLBACK, - SmbiosDataFilter, - NULL, - &FilterEvent - ); - if (EFI_ERROR (Status)) { - return Status; - } - - Status = DataHub->RegisterFilterDriver ( - DataHub, - FilterEvent, - TPL_APPLICATION, - EFI_DATA_RECORD_CLASS_DATA, - NULL - ); - if (EFI_ERROR (Status)) { - gBS->CloseEvent (FilterEvent); - return Status; - } - - return Status; - -} - -/** - Smbios data filter function. This function is invoked when there is data records - available in the Data Hub. - - @param Event The event that is signaled. - @param Context not used here. -**/ -VOID -EFIAPI -SmbiosDataFilter ( - IN EFI_EVENT Event, - IN VOID *Context - ) -{ - EFI_STATUS Status; - EFI_DATA_HUB_PROTOCOL *DataHub; - EFI_HANDLE DataHubHandle; - UINTN HandleSize; - UINT64 MonotonicCount; - EFI_DATA_RECORD_HEADER *Record; - - Status = EFI_SUCCESS; - DataHub = NULL; - - // - // Get the Data Hub Protocol. Assume only one instance - // of Data Hub Protocol is available in the system. - // - HandleSize = sizeof (EFI_HANDLE); - - Status = gBS->LocateHandle ( - ByProtocol, - &gEfiDataHubProtocolGuid, - NULL, - &HandleSize, - &DataHubHandle - ); - - if (EFI_ERROR (Status)) { - goto Done; - } - - Status = gBS->HandleProtocol ( - DataHubHandle, - &gEfiDataHubProtocolGuid, - (VOID **) &DataHub - ); - - if (EFI_ERROR (Status)) { - goto Done; - } - // - // Get all available data records from data hub - // - MonotonicCount = 0; - Record = NULL; - - do { - - Status = DataHub->GetNextRecord ( - DataHub, - &MonotonicCount, - &Event, - &Record - ); - - if (!EFI_ERROR (Status)) { - if (Record->DataRecordClass == EFI_DATA_RECORD_CLASS_DATA) { - - // - // It's of expected Data Type. Process it. - // - SmbiosProcessDataRecord (Record); - } - } - } while (!EFI_ERROR (Status) && (MonotonicCount != 0)); - -Done: - - return ; - -}