]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Universal/StatusCode/DatahubStatusCodeHandlerDxe/DatahubStatusCodeHandlerDxe.c
IntelFrameworkModulePkg: make global variable static
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / StatusCode / DatahubStatusCodeHandlerDxe / DatahubStatusCodeHandlerDxe.c
CommitLineData
28a94112 1/** @file\r
2 Status Code Handler Driver which produces datahub handler and hook it\r
3 onto the DXE status code router.\r
4\r
ea305ce3 5 Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>\r
c0a00b14 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
28a94112 7\r
8**/\r
9\r
10#include "DatahubStatusCodeHandlerDxe.h"\r
11\r
ea305ce3 12static EFI_EVENT mExitBootServicesEvent = NULL;\r
28a94112 13EFI_RSC_HANDLER_PROTOCOL *mRscHandlerProtocol = NULL;\r
14\r
15/**\r
16 Unregister status code callback functions only available at boot time from\r
17 report status code router when exiting boot services.\r
18\r
19 @param Event Event whose notification function is being invoked.\r
20 @param Context Pointer to the notification function's context, which is\r
21 always zero in current implementation.\r
22\r
23**/\r
24VOID\r
25EFIAPI\r
26UnregisterBootTimeHandlers (\r
27 IN EFI_EVENT Event,\r
28 IN VOID *Context\r
29 )\r
30{\r
31 mRscHandlerProtocol->Unregister (DataHubStatusCodeReportWorker);\r
32}\r
33\r
34/**\r
35 Entry point of DXE Status Code Driver.\r
36\r
37 This function is the entry point of this DXE Status Code Driver.\r
38 It initializes registers status code handlers, and registers event for EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.\r
39\r
40 @param ImageHandle The firmware allocated handle for the EFI image.\r
41 @param SystemTable A pointer to the EFI System Table.\r
0a6f4824 42\r
28a94112 43 @retval EFI_SUCCESS The entry point is executed successfully.\r
44\r
45**/\r
46EFI_STATUS\r
47EFIAPI\r
48DatahubStatusCodeHandlerDxeEntry (\r
49 IN EFI_HANDLE ImageHandle,\r
50 IN EFI_SYSTEM_TABLE *SystemTable\r
51 )\r
52{\r
53 EFI_STATUS Status;\r
54\r
55 if (FeaturePcdGet (PcdStatusCodeUseDataHub)) {\r
56 Status = gBS->LocateProtocol (\r
57 &gEfiRscHandlerProtocolGuid,\r
58 NULL,\r
59 (VOID **) &mRscHandlerProtocol\r
60 );\r
61 ASSERT_EFI_ERROR (Status);\r
62\r
63 //\r
64 // Dispatch initialization request to supported devices\r
65 //\r
66 DataHubStatusCodeInitializeWorker ();\r
67\r
68 mRscHandlerProtocol->Register (DataHubStatusCodeReportWorker, TPL_HIGH_LEVEL);\r
69\r
70 Status = gBS->CreateEventEx (\r
71 EVT_NOTIFY_SIGNAL,\r
72 TPL_NOTIFY,\r
73 UnregisterBootTimeHandlers,\r
74 NULL,\r
75 &gEfiEventExitBootServicesGuid,\r
76 &mExitBootServicesEvent\r
77 );\r
78 ASSERT_EFI_ERROR (Status);\r
79 }\r
80\r
81 return EFI_SUCCESS;\r
82}\r