* [PATCH 0/2] Reduce duplicate code in RTC modules @ 2021-01-06 10:55 Nhi Pham 2021-01-06 10:55 ` [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight Nhi Pham 2021-01-06 10:55 ` [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib Nhi Pham 0 siblings, 2 replies; 6+ messages in thread From: Nhi Pham @ 2021-01-06 10:55 UTC (permalink / raw) To: devel; +Cc: Nhi Pham, Leif Lindholm, Ard Biesheuvel This patch series replaces all time checking functions and leverage the helper function 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> Nhi Pham (2): EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib .../RealTimeClockRuntimeDxe.inf | 2 + EmbeddedPkg/Include/Library/TimeBaseLib.h | 13 +++ EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c | 47 +++++++--- .../RealTimeClockRuntimeDxe/RealTimeClock.c | 88 +------------------ 4 files changed, 51 insertions(+), 99 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight 2021-01-06 10:55 [PATCH 0/2] Reduce duplicate code in RTC modules Nhi Pham @ 2021-01-06 10:55 ` Nhi Pham 2021-01-06 13:03 ` Leif Lindholm 2021-01-06 10:55 ` [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib Nhi Pham 1 sibling, 1 reply; 6+ messages in thread From: Nhi Pham @ 2021-01-06 10:55 UTC (permalink / raw) To: devel; +Cc: Nhi Pham, Leif Lindholm, Ard Biesheuvel This adds two functions IsValidTimeZone() and IsValidDaylight() to check the time zone and daylight value from EFI time. These functions are retrieved from the RealTimeClockRuntimeDxe module as they reduce duplicated code in RTC modules. Cc: Leif Lindholm <leif@nuviainc.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com> --- EmbeddedPkg/Include/Library/TimeBaseLib.h | 13 ++++++ EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c | 47 ++++++++++++++------ 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h index 90853c3f4b93..8bebf5886db8 100644 --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h @@ -2,6 +2,7 @@ * * Copyright (c) 2016, Hisilicon Limited. All rights reserved. * Copyright (c) 2016-2019, Linaro Limited. All rights reserved. +* Copyright (c) 2020, Ampere Computing LLC. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * @@ -64,6 +65,18 @@ IsDayValid ( IN EFI_TIME *Time ); +BOOLEAN +EFIAPI +IsValidTimeZone ( + IN INT16 TimeZone + ); + +BOOLEAN +EFIAPI +IsValidDaylight ( + IN INT8 Daylight + ); + BOOLEAN EFIAPI IsTimeValid ( diff --git a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c index 78fc7b6cd2e5..02d9901338b9 100644 --- a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c +++ b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c @@ -2,6 +2,7 @@ * * Copyright (c) 2016, Hisilicon Limited. All rights reserved. * Copyright (c) 2016-2019, Linaro Limited. All rights reserved. +* Copyright (c) 2020, Ampere Computing LLC. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * @@ -173,23 +174,43 @@ IsDayValid ( BOOLEAN EFIAPI -IsTimeValid( +IsValidTimeZone ( + IN INT16 TimeZone + ) +{ + return TimeZone == EFI_UNSPECIFIED_TIMEZONE || + (TimeZone >= -1440 && TimeZone <= 1440); +} + +BOOLEAN +EFIAPI +IsValidDaylight ( + IN INT8 Daylight + ) +{ + return Daylight == 0 || + Daylight == EFI_TIME_ADJUST_DAYLIGHT || + Daylight == (EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT); +} + +BOOLEAN +EFIAPI +IsTimeValid ( IN EFI_TIME *Time ) { // Check the input parameters are within the range specified by UEFI - if ((Time->Year < 2000) || - (Time->Year > 2099) || - (Time->Month < 1 ) || - (Time->Month > 12 ) || - (!IsDayValid (Time) ) || - (Time->Hour > 23 ) || - (Time->Minute > 59 ) || - (Time->Second > 59 ) || - (Time->Nanosecond > 999999999) || - (!((Time->TimeZone == EFI_UNSPECIFIED_TIMEZONE) || ((Time->TimeZone >= -1440) && (Time->TimeZone <= 1440)))) || - (Time->Daylight & (~(EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT))) - ) { + if ((Time->Year < 2000) || + (Time->Year > 2099) || + (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; } -- 2.17.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight 2021-01-06 10:55 ` [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight Nhi Pham @ 2021-01-06 13:03 ` Leif Lindholm 0 siblings, 0 replies; 6+ messages in thread From: Leif Lindholm @ 2021-01-06 13:03 UTC (permalink / raw) To: Nhi Pham; +Cc: devel, Ard Biesheuvel Hi Nhi, On Wed, Jan 06, 2021 at 17:55:57 +0700, Nhi Pham wrote: > This adds two functions IsValidTimeZone() and IsValidDaylight() to check > the time zone and daylight value from EFI time. These functions are > retrieved from the RealTimeClockRuntimeDxe module as they reduce > duplicated code in RTC modules. > > Cc: Leif Lindholm <leif@nuviainc.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> > Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com> > --- > EmbeddedPkg/Include/Library/TimeBaseLib.h | 13 ++++++ > EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c | 47 ++++++++++++++------ > 2 files changed, 47 insertions(+), 13 deletions(-) > > diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h > index 90853c3f4b93..8bebf5886db8 100644 > --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h > +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h > @@ -2,6 +2,7 @@ > * > * Copyright (c) 2016, Hisilicon Limited. All rights reserved. > * Copyright (c) 2016-2019, Linaro Limited. All rights reserved. > +* Copyright (c) 2020, Ampere Computing LLC. All rights reserved. 2021? :) > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -64,6 +65,18 @@ IsDayValid ( > IN EFI_TIME *Time > ); > > +BOOLEAN > +EFIAPI > +IsValidTimeZone ( > + IN INT16 TimeZone > + ); > + > +BOOLEAN > +EFIAPI > +IsValidDaylight ( > + IN INT8 Daylight > + ); > + Could you please add doxygen comment blocks to these new functions (and repeat them in the .c)? I know we've been lax about this in the past, but I would like for us to start improving (especially in common libraries). > BOOLEAN > EFIAPI > IsTimeValid ( > diff --git a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c > index 78fc7b6cd2e5..02d9901338b9 100644 > --- a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c > +++ b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c > @@ -2,6 +2,7 @@ > * > * Copyright (c) 2016, Hisilicon Limited. All rights reserved. > * Copyright (c) 2016-2019, Linaro Limited. All rights reserved. > +* Copyright (c) 2020, Ampere Computing LLC. All rights reserved. > * > * SPDX-License-Identifier: BSD-2-Clause-Patent > * > @@ -173,23 +174,43 @@ IsDayValid ( > > BOOLEAN > EFIAPI > -IsTimeValid( > +IsValidTimeZone ( > + IN INT16 TimeZone > + ) > +{ > + return TimeZone == EFI_UNSPECIFIED_TIMEZONE || > + (TimeZone >= -1440 && TimeZone <= 1440); > +} > + > +BOOLEAN > +EFIAPI > +IsValidDaylight ( > + IN INT8 Daylight > + ) > +{ > + return Daylight == 0 || > + Daylight == EFI_TIME_ADJUST_DAYLIGHT || > + Daylight == (EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT); > +} > + > +BOOLEAN > +EFIAPI > +IsTimeValid ( > IN EFI_TIME *Time > ) > { > // Check the input parameters are within the range specified by UEFI > - if ((Time->Year < 2000) || > - (Time->Year > 2099) || > - (Time->Month < 1 ) || > - (Time->Month > 12 ) || > - (!IsDayValid (Time) ) || > - (Time->Hour > 23 ) || > - (Time->Minute > 59 ) || > - (Time->Second > 59 ) || > - (Time->Nanosecond > 999999999) || > - (!((Time->TimeZone == EFI_UNSPECIFIED_TIMEZONE) || ((Time->TimeZone >= -1440) && (Time->TimeZone <= 1440)))) || > - (Time->Daylight & (~(EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT))) > - ) { > + if ((Time->Year < 2000) || > + (Time->Year > 2099) || > + (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))) { Can you split the tidying of unchanged lines up into a separate preceding patch please? Best Regards, Leif p.s. I have now cleared my backlog after getting back from Christmas and am just about to get back to reviewing the massive mt-jade platform port. Apologies for the delay on this. > return FALSE; > } > > -- > 2.17.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib 2021-01-06 10:55 [PATCH 0/2] Reduce duplicate code in RTC modules Nhi Pham 2021-01-06 10:55 ` [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight Nhi Pham @ 2021-01-06 10:55 ` Nhi Pham 2021-01-06 13:05 ` Leif Lindholm 1 sibling, 1 reply; 6+ messages in thread From: Nhi Pham @ 2021-01-06 10:55 UTC (permalink / raw) To: devel; +Cc: Nhi Pham, Leif Lindholm, Ard Biesheuvel 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> --- 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..c0e44033af3a 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) 2020, Ampere Computing LLC. All rights reserved.<BR> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -31,6 +32,7 @@ [LibraryClasses] UefiBootServicesTableLib UefiDriverEntryPoint UefiRuntimeLib + TimeBaseLib [Protocols] gEfiRealTimeClockArchProtocolGuid diff --git a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c index 20f1fa640ecc..8ae4e9315be5 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) 2020, Ampere Computing LLC. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -14,6 +15,7 @@ #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> #include <Library/UefiRuntimeLib.h> +#include <Library/TimeBaseLib.h> #include <Protocol/RealTimeClock.h> EFI_HANDLE mHandle = NULL; @@ -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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib 2021-01-06 10:55 ` [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib Nhi Pham @ 2021-01-06 13:05 ` Leif Lindholm 2021-01-06 13:39 ` Nhi Pham 0 siblings, 1 reply; 6+ messages in thread From: Leif Lindholm @ 2021-01-06 13:05 UTC (permalink / raw) To: Nhi Pham; +Cc: devel, Ard Biesheuvel On Wed, Jan 06, 2021 at 17:55:58 +0700, Nhi Pham wrote: > 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> > --- > 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..c0e44033af3a 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) 2020, Ampere Computing LLC. All rights reserved.<BR> 2021? > # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -31,6 +32,7 @@ [LibraryClasses] > UefiBootServicesTableLib > UefiDriverEntryPoint > UefiRuntimeLib > + TimeBaseLib Please insert alphabetically sorted. > > [Protocols] > gEfiRealTimeClockArchProtocolGuid > diff --git a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c > index 20f1fa640ecc..8ae4e9315be5 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) 2020, Ampere Computing LLC. All rights reserved.<BR> 2021? > > SPDX-License-Identifier: BSD-2-Clause-Patent > > @@ -14,6 +15,7 @@ > #include <Library/UefiLib.h> > #include <Library/UefiBootServicesTableLib.h> > #include <Library/UefiRuntimeLib.h> > +#include <Library/TimeBaseLib.h> Please insert alphabetically sorted. This set looks a nice bit of cleanup, though - thanks! / Leif > #include <Protocol/RealTimeClock.h> > > EFI_HANDLE mHandle = NULL; > @@ -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 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib 2021-01-06 13:05 ` Leif Lindholm @ 2021-01-06 13:39 ` Nhi Pham 0 siblings, 0 replies; 6+ messages in thread From: Nhi Pham @ 2021-01-06 13:39 UTC (permalink / raw) To: Leif Lindholm; +Cc: devel, Ard Biesheuvel Thanks. I will fix all comments in the v2. -Nhi On 1/6/21 20:05, Leif Lindholm wrote: > On Wed, Jan 06, 2021 at 17:55:58 +0700, Nhi Pham wrote: >> 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> >> --- >> 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..c0e44033af3a 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) 2020, Ampere Computing LLC. All rights reserved.<BR> > 2021? > >> # >> # SPDX-License-Identifier: BSD-2-Clause-Patent >> # >> @@ -31,6 +32,7 @@ [LibraryClasses] >> UefiBootServicesTableLib >> UefiDriverEntryPoint >> UefiRuntimeLib >> + TimeBaseLib > Please insert alphabetically sorted. > >> >> [Protocols] >> gEfiRealTimeClockArchProtocolGuid >> diff --git a/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c b/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClock.c >> index 20f1fa640ecc..8ae4e9315be5 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) 2020, Ampere Computing LLC. All rights reserved.<BR> > 2021? > >> >> SPDX-License-Identifier: BSD-2-Clause-Patent >> >> @@ -14,6 +15,7 @@ >> #include <Library/UefiLib.h> >> #include <Library/UefiBootServicesTableLib.h> >> #include <Library/UefiRuntimeLib.h> >> +#include <Library/TimeBaseLib.h> > Please insert alphabetically sorted. > > This set looks a nice bit of cleanup, though - thanks! > > / > Leif > >> #include <Protocol/RealTimeClock.h> >> >> EFI_HANDLE mHandle = NULL; >> @@ -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 >> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-01-06 13:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-01-06 10:55 [PATCH 0/2] Reduce duplicate code in RTC modules Nhi Pham 2021-01-06 10:55 ` [PATCH 1/2] EmbeddedPkg/TimeBaseLib: Add function to check Timezone and Daylight Nhi Pham 2021-01-06 13:03 ` Leif Lindholm 2021-01-06 10:55 ` [PATCH 2/2] EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib Nhi Pham 2021-01-06 13:05 ` Leif Lindholm 2021-01-06 13:39 ` Nhi Pham
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox