]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c
Rename PcdPlatformBusSpeed to PcdFSBClock and update help text.
[mirror_edk2.git] / EdkModulePkg / Library / DxeCorePerformanceLib / DxeCorePerformanceLib.c
index e4e7b3bb3b689080aa87e824d45cc60abc8d95ac..268a6a04f24b445a33098040489710fba4c40cb7 100644 (file)
@@ -118,7 +118,8 @@ GetGauge (
 STATIC GAUGE_DATA_HEADER    *mGaugeData;\r
 STATIC UINT32               mMaxGaugeRecords;\r
 \r
-PERFORMANCE_PROTOCOL PerformanceInterface = {\r
+EFI_HANDLE           mHandle = NULL;\r
+PERFORMANCE_PROTOCOL mPerformanceInterface = {\r
   StartGauge,\r
   EndGauge,\r
   GetGauge\r
@@ -213,7 +214,6 @@ StartGauge (
   UINTN                     GaugeDataSize;\r
   UINTN                     OldGaugeDataSize;\r
   GAUGE_DATA_HEADER         *OldGaugeData;\r
-  EFI_STATUS                Status;\r
   UINT32                    Index;\r
 \r
   Index = mGaugeData->NumberOfEntries;\r
@@ -223,23 +223,20 @@ StartGauge (
     //\r
     OldGaugeData      = mGaugeData;\r
     OldGaugeDataSize  = sizeof (GAUGE_DATA_HEADER) + sizeof (GAUGE_DATA_ENTRY) * mMaxGaugeRecords;\r
+\r
     mMaxGaugeRecords *= 2;\r
     GaugeDataSize     = sizeof (GAUGE_DATA_HEADER) + sizeof (GAUGE_DATA_ENTRY) * mMaxGaugeRecords;\r
-    Status            = gBS->AllocatePool (\r
-                               EfiBootServicesData,\r
-                               GaugeDataSize,\r
-                               (VOID **) &mGaugeData\r
-                               );\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
+    \r
+    mGaugeData = AllocateZeroPool (GaugeDataSize);\r
+    if (mGaugeData == NULL) {\r
+      return EFI_OUT_OF_RESOURCES;\r
     }\r
     //\r
     // Initialize new data arry and migrate old data one. \r
     //\r
-    mGaugeData        = ZeroMem (mGaugeData, GaugeDataSize);\r
-    mGaugeData        = CopyMem (mGaugeData, OldGaugeData, OldGaugeDataSize);\r
+    mGaugeData = CopyMem (mGaugeData, OldGaugeData, OldGaugeDataSize);\r
     \r
-    gBS->FreePool (OldGaugeData); \r
+    FreePool (OldGaugeData); \r
   }\r
   \r
   GaugeEntryArray               = (GAUGE_DATA_ENTRY *) (mGaugeData + 1);\r
@@ -423,31 +420,28 @@ DxeCorePerformanceLibConstructor (
   )\r
 {\r
   EFI_STATUS                Status;\r
-  EFI_HANDLE                Handle;\r
-  UINTN                     GaugeDataSize;\r
 \r
+  if (!PerformanceMeasurementEnabled ()) {\r
+    //\r
+    // Do not initialize performance infrastructure if not required.\r
+    //\r
+    return EFI_SUCCESS;\r
+  }\r
   //\r
   // Install the protocol interfaces.\r
   //\r
-  Handle = NULL;\r
   Status = gBS->InstallProtocolInterface (\r
-                  &Handle,\r
+                  &mHandle,\r
                   &gPerformanceProtocolGuid,\r
                   EFI_NATIVE_INTERFACE,\r
-                  &PerformanceInterface\r
+                  &mPerformanceInterface\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  mMaxGaugeRecords = INIT_DXE_GAUGE_DATA_ENTRIES + MAX_PEI_PERFORMANCE_LOG_ENTRIES;\r
-  GaugeDataSize   = sizeof (GAUGE_DATA_HEADER) + sizeof (GAUGE_DATA_ENTRY) * mMaxGaugeRecords;\r
-  Status = gBS->AllocatePool (\r
-                  EfiBootServicesData,\r
-                  GaugeDataSize,\r
-                  (VOID **) &mGaugeData\r
-                  );\r
-  ASSERT_EFI_ERROR (Status);\r
+  mMaxGaugeRecords = INIT_DXE_GAUGE_DATA_ENTRIES + PcdGet8 (PcdMaxPeiPerformanceLogEntries);\r
 \r
-  ZeroMem (mGaugeData, GaugeDataSize);\r
+  mGaugeData = AllocateZeroPool (sizeof (GAUGE_DATA_HEADER) + (sizeof (GAUGE_DATA_ENTRY) * mMaxGaugeRecords));\r
+  ASSERT (mGaugeData != NULL);\r
 \r
   InternalGetPeiPerformance ();\r
 \r