mirror of https://github.com/acidanthera/audk.git
EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib
This patch replaces all time checking functions and leverage the helper functions in TimeBaseLib library. Cc: Leif Lindholm <leif@nuviainc.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
This commit is contained in:
parent
e31dc4717c
commit
55ee36b0c4
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||||
Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
|
Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
|
||||||
|
Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR>
|
||||||
|
|
||||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
|
|
||||||
|
@ -11,6 +12,7 @@
|
||||||
#include <PiDxe.h>
|
#include <PiDxe.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
#include <Library/RealTimeClockLib.h>
|
#include <Library/RealTimeClockLib.h>
|
||||||
|
#include <Library/TimeBaseLib.h>
|
||||||
#include <Library/UefiLib.h>
|
#include <Library/UefiLib.h>
|
||||||
#include <Library/UefiBootServicesTableLib.h>
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
#include <Library/UefiRuntimeLib.h>
|
#include <Library/UefiRuntimeLib.h>
|
||||||
|
@ -31,92 +33,6 @@ typedef struct {
|
||||||
STATIC CONST CHAR16 mTimeSettingsVariableName[] = L"RtcTimeSettings";
|
STATIC CONST CHAR16 mTimeSettingsVariableName[] = L"RtcTimeSettings";
|
||||||
STATIC NON_VOLATILE_TIME_SETTINGS mTimeSettings;
|
STATIC NON_VOLATILE_TIME_SETTINGS mTimeSettings;
|
||||||
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
IsValidTimeZone (
|
|
||||||
IN INT16 TimeZone
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return TimeZone == EFI_UNSPECIFIED_TIMEZONE ||
|
|
||||||
(TimeZone >= -1440 && TimeZone <= 1440);
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
IsValidDaylight (
|
|
||||||
IN INT8 Daylight
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return Daylight == 0 ||
|
|
||||||
Daylight == EFI_TIME_ADJUST_DAYLIGHT ||
|
|
||||||
Daylight == (EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT);
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
IsLeapYear (
|
|
||||||
IN EFI_TIME *Time
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if (Time->Year % 4 == 0) {
|
|
||||||
if (Time->Year % 100 == 0) {
|
|
||||||
if (Time->Year % 400 == 0) {
|
|
||||||
return TRUE;
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC CONST INTN mDayOfMonth[12] = {
|
|
||||||
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
|
|
||||||
};
|
|
||||||
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
IsDayValid (
|
|
||||||
IN EFI_TIME *Time
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if (Time->Day < 1 ||
|
|
||||||
Time->Day > mDayOfMonth[Time->Month - 1] ||
|
|
||||||
(Time->Month == 2 && !IsLeapYear (Time) && Time->Day > 28)) {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
STATIC
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
IsTimeValid(
|
|
||||||
IN EFI_TIME *Time
|
|
||||||
)
|
|
||||||
{
|
|
||||||
// Check the input parameters are within the range specified by UEFI
|
|
||||||
if (Time->Year < 1900 ||
|
|
||||||
Time->Year > 9999 ||
|
|
||||||
Time->Month < 1 ||
|
|
||||||
Time->Month > 12 ||
|
|
||||||
!IsDayValid (Time) ||
|
|
||||||
Time->Hour > 23 ||
|
|
||||||
Time->Minute > 59 ||
|
|
||||||
Time->Second > 59 ||
|
|
||||||
Time->Nanosecond > 999999999 ||
|
|
||||||
!IsValidTimeZone (Time->TimeZone) ||
|
|
||||||
!IsValidDaylight (Time->Daylight)) {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the current time and date information, and the time-keeping capabilities
|
Returns the current time and date information, and the time-keeping capabilities
|
||||||
of the hardware platform.
|
of the hardware platform.
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
||||||
# Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
|
# Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
|
||||||
|
# Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
#
|
#
|
||||||
|
@ -28,6 +29,7 @@
|
||||||
[LibraryClasses]
|
[LibraryClasses]
|
||||||
DebugLib
|
DebugLib
|
||||||
RealTimeClockLib
|
RealTimeClockLib
|
||||||
|
TimeBaseLib
|
||||||
UefiBootServicesTableLib
|
UefiBootServicesTableLib
|
||||||
UefiDriverEntryPoint
|
UefiDriverEntryPoint
|
||||||
UefiRuntimeLib
|
UefiRuntimeLib
|
||||||
|
|
Loading…
Reference in New Issue