]> git.proxmox.com Git - mirror_edk2.git/commitdiff
First try to get log time at TPL level <= TPL_CALLBACK, then fill time into DataHub.
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 29 Nov 2010 04:41:58 +0000 (04:41 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 29 Nov 2010 04:41:58 +0000 (04:41 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11102 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Universal/DataHubDxe/DataHub.c

index 7582054e703eee72a54b64e1058930f910807971..01bc215ccd1d4e2ae8a1e7e7bc91d09d62789b34 100644 (file)
@@ -58,6 +58,7 @@ DataHubLogData (
   DATA_HUB_FILTER_DRIVER  *FilterEntry;\r
   LIST_ENTRY              *Link;\r
   LIST_ENTRY              *Head;\r
+  EFI_TIME                LogTime;\r
 \r
   Private = DATA_HUB_INSTANCE_FROM_THIS (This);\r
 \r
@@ -69,10 +70,18 @@ DataHubLogData (
   //\r
   RecordSize  = sizeof (EFI_DATA_RECORD_HEADER) + RawDataSize;\r
   TotalSize   = sizeof (EFI_DATA_ENTRY) + RecordSize;\r
+  \r
+  //\r
+  // First try to get log time at TPL level <= TPL_CALLBACK.\r
+  //\r
+  ZeroMem (&LogTime, sizeof (LogTime));\r
+  if (EfiGetCurrentTpl() <= TPL_CALLBACK) {\r
+    gRT->GetTime (&LogTime, NULL);\r
+  }\r
 \r
   //\r
   // The Logging action is the critical section, so it is locked.\r
-  //  The MTC asignment & update, time, and logging must be an\r
+  //  The MTC asignment & update and logging must be an\r
   //  atomic operation, so use the lock.\r
   //\r
   Status = EfiAcquireLockOrFail (&Private->DataLock);\r
@@ -110,7 +119,7 @@ DataHubLogData (
   //\r
   Record->LogMonotonicCount = ++Private->GlobalMonotonicCount;\r
 \r
-  gRT->GetTime (&Record->LogTime, NULL);\r
+  CopyMem (&Record->LogTime, &LogTime, sizeof (LogTime));\r
 \r
   //\r
   // Insert log into the internal linked list.\r
@@ -551,7 +560,7 @@ DataHubInstall (
   InitializeListHead (&mPrivateData.DataListHead);\r
   InitializeListHead (&mPrivateData.FilterDriverListHead);\r
 \r
-  EfiInitializeLock (&mPrivateData.DataLock, TPL_CALLBACK);\r
+  EfiInitializeLock (&mPrivateData.DataLock, TPL_NOTIFY);\r
 \r
   //\r
   // Make sure we get a bigger MTC number on every boot!\r