[edk2-devel] [PATCH v2 4/4] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib

Nhi Pham via groups.io nhi=os.amperecomputing.com at groups.io
Wed Jan 6 16:09:03 UTC 2021


This patch replaces all time checking functions and leverage the helper
functions in TimeBaseLib library.

Cc: Leif Lindholm <leif at nuviainc.com>
Cc: Ard Biesheuvel <ard.biesheuvel at arm.com>
Signed-off-by: Nhi Pham <nhi at os.amperecomputing.com>
---
 EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf |  2 +
 EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c             | 88 +-------------------
 2 files changed, 4 insertions(+), 86 deletions(-)

diff --git a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
index c9cd052adef4..fec53c79d335 100644
--- a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
+++ b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
@@ -3,6 +3,7 @@
 #
 #  Copyright (c) 2006 - 2007, Intel Corporation. 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
 #
@@ -28,6 +29,7 @@ [Packages]
 [LibraryClasses]
   DebugLib
   RealTimeClockLib
+  TimeBaseLib
   UefiBootServicesTableLib
   UefiDriverEntryPoint
   UefiRuntimeLib
diff --git a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c
index 20f1fa640ecc..e59036badc91 100644
--- a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c
+++ b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c
@@ -3,6 +3,7 @@
 
   Copyright (c) 2008 - 2009, Apple Inc. 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
 
@@ -11,6 +12,7 @@
 #include <PiDxe.h>
 #include <Library/DebugLib.h>
 #include <Library/RealTimeClockLib.h>
+#include <Library/TimeBaseLib.h>
 #include <Library/UefiLib.h>
 #include <Library/UefiBootServicesTableLib.h>
 #include <Library/UefiRuntimeLib.h>
@@ -31,92 +33,6 @@ typedef struct {
 STATIC CONST CHAR16 mTimeSettingsVariableName[] = L"RtcTimeSettings";
 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
   of the hardware platform.
-- 
2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69845): https://edk2.groups.io/g/devel/message/69845
Mute This Topic: https://groups.io/mt/79477833/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list