]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Event/Timer.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Event / Timer.c
index d0ca1fc9fca1c88aec758faee811dbbcfea7f1ff..7a94712d81707a56262615ce0560bb3962f3b1e6 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   Core Timer Services\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -51,20 +45,20 @@ CoreInsertEventTimer (
   //\r
   // Get the timer's trigger time\r
   //\r
-  TriggerTime = Event->u.Timer.TriggerTime;\r
+  TriggerTime = Event->Timer.TriggerTime;\r
 \r
   //\r
   // Insert the timer into the timer database in assending sorted order\r
   //\r
   for (Link = mEfiTimerList.ForwardLink; Link != &mEfiTimerList; Link = Link->ForwardLink) {\r
-    Event2 = CR (Link, IEVENT, u.Timer.Link, EVENT_SIGNATURE);\r
+    Event2 = CR (Link, IEVENT, Timer.Link, EVENT_SIGNATURE);\r
 \r
-    if (Event2->u.Timer.TriggerTime > TriggerTime) {\r
+    if (Event2->Timer.TriggerTime > TriggerTime) {\r
       break;\r
     }\r
   }\r
 \r
-  InsertTailList (Link, &Event->u.Timer.Link);\r
+  InsertTailList (Link, &Event->Timer.Link);\r
 }\r
 \r
 /**\r
@@ -112,12 +106,12 @@ CoreCheckTimers (
   SystemTime = CoreCurrentSystemTime ();\r
 \r
   while (!IsListEmpty (&mEfiTimerList)) {\r
-    Event = CR (mEfiTimerList.ForwardLink, IEVENT, u.Timer.Link, EVENT_SIGNATURE);\r
+    Event = CR (mEfiTimerList.ForwardLink, IEVENT, Timer.Link, EVENT_SIGNATURE);\r
 \r
     //\r
     // If this timer is not expired, then we're done\r
     //\r
-    if (Event->u.Timer.TriggerTime > SystemTime) {\r
+    if (Event->Timer.TriggerTime > SystemTime) {\r
       break;\r
     }\r
 \r
@@ -125,8 +119,8 @@ CoreCheckTimers (
     // Remove this timer from the timer queue\r
     //\r
 \r
-    RemoveEntryList (&Event->u.Timer.Link);\r
-    Event->u.Timer.Link.ForwardLink = NULL;\r
+    RemoveEntryList (&Event->Timer.Link);\r
+    Event->Timer.Link.ForwardLink = NULL;\r
 \r
     //\r
     // Signal it\r
@@ -136,17 +130,17 @@ CoreCheckTimers (
     //\r
     // If this is a periodic timer, set it\r
     //\r
-    if (Event->u.Timer.Period) {\r
+    if (Event->Timer.Period != 0) {\r
       //\r
       // Compute the timers new trigger time\r
       //\r
-      Event->u.Timer.TriggerTime = Event->u.Timer.TriggerTime + Event->u.Timer.Period;\r
+      Event->Timer.TriggerTime = Event->Timer.TriggerTime + Event->Timer.Period;\r
 \r
       //\r
       // If that's before now, then reset the timer to start from now\r
       //\r
-      if (Event->u.Timer.TriggerTime <= SystemTime) {\r
-        Event->u.Timer.TriggerTime = SystemTime;\r
+      if (Event->Timer.TriggerTime <= SystemTime) {\r
+        Event->Timer.TriggerTime = SystemTime;\r
         CoreSignalEvent (mEfiCheckTimerEvent);\r
       }\r
 \r
@@ -172,11 +166,12 @@ CoreInitializeTimer (
 {\r
   EFI_STATUS  Status;\r
 \r
-  Status = CoreCreateEvent (\r
+  Status = CoreCreateEventInternal (\r
              EVT_NOTIFY_SIGNAL,\r
              TPL_HIGH_LEVEL - 1,\r
              CoreCheckTimers,\r
              NULL,\r
+             NULL,\r
              &mEfiCheckTimerEvent\r
              );\r
   ASSERT_EFI_ERROR (Status);\r
@@ -186,7 +181,7 @@ CoreInitializeTimer (
 /**\r
   Called by the platform code to process a tick.\r
 \r
-  @param  Duration               The number of 100ns elasped since the last call\r
+  @param  Duration               The number of 100ns elapsed since the last call\r
                                  to TimerTick\r
 \r
 **/\r
@@ -213,9 +208,9 @@ CoreTimerTick (
   // to process it\r
   //\r
   if (!IsListEmpty (&mEfiTimerList)) {\r
-    Event = CR (mEfiTimerList.ForwardLink, IEVENT, u.Timer.Link, EVENT_SIGNATURE);\r
+    Event = CR (mEfiTimerList.ForwardLink, IEVENT, Timer.Link, EVENT_SIGNATURE);\r
 \r
-    if (Event->u.Timer.TriggerTime <= mEfiSystemTime) {\r
+    if (Event->Timer.TriggerTime <= mEfiSystemTime) {\r
       CoreSignalEvent (mEfiCheckTimerEvent);\r
     }\r
   }\r
@@ -260,7 +255,7 @@ CoreSetTimer (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if (Type < 0 || Type > TimerRelative  || (Event->Type & EVT_TIMER) == 0) {\r
+  if ((UINT32)Type > TimerRelative  || (Event->Type & EVT_TIMER) == 0) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -269,21 +264,24 @@ CoreSetTimer (
   //\r
   // If the timer is queued to the timer database, remove it\r
   //\r
-  if (Event->u.Timer.Link.ForwardLink != NULL) {\r
-    RemoveEntryList (&Event->u.Timer.Link);\r
-    Event->u.Timer.Link.ForwardLink = NULL;\r
+  if (Event->Timer.Link.ForwardLink != NULL) {\r
+    RemoveEntryList (&Event->Timer.Link);\r
+    Event->Timer.Link.ForwardLink = NULL;\r
   }\r
 \r
-  Event->u.Timer.TriggerTime = 0;\r
-  Event->u.Timer.Period = 0;\r
+  Event->Timer.TriggerTime = 0;\r
+  Event->Timer.Period = 0;\r
 \r
   if (Type != TimerCancel) {\r
 \r
     if (Type == TimerPeriodic) {\r
-      Event->u.Timer.Period = TriggerTime;\r
+      if (TriggerTime == 0) {\r
+        gTimer->GetTimerPeriod (gTimer, &TriggerTime);\r
+      }\r
+      Event->Timer.Period = TriggerTime;\r
     }\r
 \r
-    Event->u.Timer.TriggerTime = CoreCurrentSystemTime () + TriggerTime;\r
+    Event->Timer.TriggerTime = CoreCurrentSystemTime () + TriggerTime;\r
     CoreInsertEventTimer (Event);\r
 \r
     if (TriggerTime == 0) {\r