/** @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
//\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
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
// 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
//\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
{\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
/**\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
// 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
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
//\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