Hi Matt, Please also add Cc: tag lines to each commit message for the Maintainers/Reviewers from Maintainers.txt so they get informed of patches. Many of us use rules on our email clients so these are sorted to look at first.
https://github.com/tianocore/tianocore.github.io/wiki/Laszlo's-unkempt-git-guide-for-edk2-contributors-and-maintainers#contrib-18 There is a python script BaseTools/Scripts/GetMaintainer.py that helps collect these Cc: lines from a set of commits on a branch. Thanks, Mike > -----Original Message----- > From: Kinney, Michael D <[email protected]> > Sent: Wednesday, July 8, 2020 10:03 AM > To: [email protected]; [email protected]; > Kinney, Michael D <[email protected]> > Subject: RE: [edk2-devel] [PATCH v1 1/3] > UnitTestFrameworkPkg : BaseTimerLib: Adds a host-based > timer Lib > > Hi Matt, > > If this instance uses POSIX APIs, shouldn't this > version go into the Library/Posix directory? > > There are also a few code style issues. For example, > local variables should not be initialized in their > declaration. > > Thanks, > > Mike > > > -----Original Message----- > > From: [email protected] <[email protected]> On > > Behalf Of [email protected] > > Sent: Tuesday, July 7, 2020 6:31 PM > > To: [email protected] > > Cc: Matthew Carlson <[email protected]> > > Subject: [edk2-devel] [PATCH v1 1/3] > > UnitTestFrameworkPkg : BaseTimerLib: Adds a host-based > > timer Lib > > > > From: Matthew Carlson <[email protected]> > > > > This adds a host based BaseTimerLib that won't assert. > > > > Signed-off-by: Matthew Carlson > > <[email protected]> > > --- > > > > > UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Timer > > LibHost.c | 137 ++++++++++++++++++++ > > > > > UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/BaseT > > imerLibHost.inf | 40 ++++++ > > > > > UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/BaseT > > imerLibHost.uni | 19 +++ > > UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > > | 1 + > > 4 files changed, 197 insertions(+) > > > > diff --git > > > a/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Tim > > erLibHost.c > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Tim > > erLibHost.c > > new file mode 100644 > > index 000000000000..61304e66f54f > > --- /dev/null > > +++ > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Tim > > erLibHost.c > > @@ -0,0 +1,137 @@ > > +/** @file > > > > + A non-functional instance of the Timer Library. > > > > + > > > > + Copyright (c) 2007 - 2011, Intel Corporation. All > > rights reserved.<BR> > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > +**/ > > > > + > > > > +#include <Base.h> > > > > +#include <Library/TimerLib.h> > > > > +#include <Library/DebugLib.h> > > > > +#include <stdio.h> > > > > +#include <stdlib.h> > > > > +#include <time.h> > > > > + > > > > +/** > > > > + Stalls the CPU for at least the given number of > > microseconds. > > > > + > > > > + Stalls the CPU for the number of microseconds > > specified by MicroSeconds. > > > > + > > > > + @param MicroSeconds The minimum number of > > microseconds to delay. > > > > + > > > > + @return The value of MicroSeconds inputted. > > > > + > > > > +**/ > > > > +UINTN > > > > +EFIAPI > > > > +MicroSecondDelay ( > > > > + IN UINTN MicroSeconds > > > > + ) > > > > +{ > > > > + return NanoSecondDelay(MicroSeconds * 1000000) / > > 1000000; > > > > +} > > > > + > > > > +/** > > > > + Stalls the CPU for at least the given number of > > nanoseconds. > > > > + > > > > + Stalls the CPU for the number of nanoseconds > > specified by NanoSeconds. > > > > + > > > > + @param NanoSeconds The minimum number of > nanoseconds > > to delay. > > > > + > > > > + @return The value of NanoSeconds inputted. > > > > + > > > > +**/ > > > > +UINTN > > > > +EFIAPI > > > > +NanoSecondDelay ( > > > > + IN UINTN NanoSeconds > > > > + ) > > > > +{ > > > > + /*UINT64 start = GetPerformanceCounter(); > > > > + UINT64 goal = start + NanoSeconds; > > > > + DEBUG(( DEBUG_ERROR, "Delaying for %d ns. Start: %d > > to %d\n", NanoSeconds, start, goal)); > > > > + // check if we need to wait for the counter to roll > > over > > > > + if (start > goal) { > > > > + DEBUG(( DEBUG_ERROR, "Start is more than > goal\n")); > > > > + while (GetPerformanceCounter() > goal); > > > > + } > > > > + while (GetPerformanceCounter() < goal); > > > > + return NanoSeconds;*/ > > > > + return 0; > > > > +} > > > > + > > > > +/** > > > > + Retrieves the current value of a 64-bit free > running > > performance counter. > > > > + > > > > + The counter can either count up by 1 or count down > by > > 1. If the physical > > > > + performance counter counts by a larger increment, > > then the counter values > > > > + must be translated. The properties of the counter > can > > be retrieved from > > > > + GetPerformanceCounterProperties(). > > > > + > > > > + @return The current value of the free running > > performance counter. > > > > + > > > > +**/ > > > > +UINT64 > > > > +EFIAPI > > > > +GetPerformanceCounter ( > > > > + VOID > > > > + ) > > > > +{ > > > > + struct timespec ts; > > > > + timespec_get(&ts, TIME_UTC); > > > > + return ts.tv_nsec; > > > > +} > > > > + > > > > +/** > > > > + Retrieves the 64-bit frequency in Hz and the range > of > > performance counter > > > > + values. > > > > + > > > > + If StartValue is not NULL, then the value that the > > performance counter starts > > > > + with immediately after is it rolls over is returned > > in StartValue. If > > > > + EndValue is not NULL, then the value that the > > performance counter end with > > > > + immediately before it rolls over is returned in > > EndValue. The 64-bit > > > > + frequency of the performance counter in Hz is > always > > returned. If StartValue > > > > + is less than EndValue, then the performance counter > > counts up. If StartValue > > > > + is greater than EndValue, then the performance > > counter counts down. For > > > > + example, a 64-bit free running counter that counts > up > > would have a StartValue > > > > + of 0 and an EndValue of 0xFFFFFFFFFFFFFFFF. A 24- > bit > > free running counter > > > > + that counts down would have a StartValue of > 0xFFFFFF > > and an EndValue of 0. > > > > + > > > > + @param StartValue The value the performance > counter > > starts with when it > > > > + rolls over. > > > > + @param EndValue The value that the performance > > counter ends with before > > > > + it rolls over. > > > > + > > > > + @return The frequency in Hz. > > > > + > > > > +**/ > > > > +UINT64 > > > > +EFIAPI > > > > +GetPerformanceCounterProperties ( > > > > + OUT UINT64 *StartValue, > > OPTIONAL > > > > + OUT UINT64 *EndValue > > OPTIONAL > > > > + ) > > > > +{ > > > > + return (UINT64)(-1); > > > > +} > > > > + > > > > +/** > > > > + Converts elapsed ticks of performance counter to > time > > in nanoseconds. > > > > + > > > > + This function converts the elapsed ticks of running > > performance counter to > > > > + time value in unit of nanoseconds. > > > > + > > > > + @param Ticks The number of elapsed ticks of > > running performance counter. > > > > + > > > > + @return The elapsed time in nanoseconds. > > > > + > > > > +**/ > > > > +UINT64 > > > > +EFIAPI > > > > +GetTimeInNanoSecond ( > > > > + IN UINT64 Ticks > > > > + ) > > > > +{ > > > > + return Ticks; > > > > +} > > > > diff --git > > > a/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.inf > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.inf > > new file mode 100644 > > index 000000000000..ac091cd10af1 > > --- /dev/null > > +++ > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.inf > > @@ -0,0 +1,40 @@ > > +## @file > > > > +# NULL instance of Timer Library as a template. > > > > +# > > > > +# A non-functional instance of the Timer Library > that > > can be used as a template > > > > +# for the implementation of a functional timer > library > > instance. This library instance can > > > > +# also be used to test build DXE, Runtime, DXE SAL, > > and DXE SMM modules that require timer > > > > +# services as well as EBC modules that require timer > > services. > > > > +# > > > > +# Copyright (c) 2007 - 2018, Intel Corporation. All > > rights reserved.<BR> > > > > +# > > > > +# SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +# > > > > +# > > > > +## > > > > + > > > > +[Defines] > > > > + INF_VERSION = 0x00010005 > > > > + BASE_NAME = BaseTimerLibHost > > > > + MODULE_UNI_FILE = > BaseTimerLibHost.uni > > > > + FILE_GUID = a2a413b8-43c3- > 40cc- > > a298-be7a214d3564 > > > > + MODULE_TYPE = BASE > > > > + VERSION_STRING = 1.0 > > > > + LIBRARY_CLASS = TimerLib > > > > + > > > > + > > > > +# > > > > +# VALID_ARCHITECTURES = IA32 X64 EBC AARCH > > > > +# > > > > + > > > > +[Sources] > > > > + TimerLibHost.c > > > > + > > > > + > > > > +[Packages] > > > > + MdePkg/MdePkg.dec > > > > + > > > > + > > > > +[LibraryClasses] > > > > + DebugLib > > > > + > > > > diff --git > > > a/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.uni > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.uni > > new file mode 100644 > > index 000000000000..6e100bd383d2 > > --- /dev/null > > +++ > > > b/UnitTestFrameworkPkg/Library/Host/BaseTimerLibHost/Bas > > eTimerLibHost.uni > > @@ -0,0 +1,19 @@ > > +// /** @file > > > > +// NULL instance of Timer Library as a template. > > > > +// > > > > +// A non-functional instance of the Timer Library > that > > can be used as a template > > > > +// for the implementation of a functional timer > library > > instance. This library instance can > > > > +// also be used to test build DXE, Runtime, DXE SAL, > > and DXE SMM modules that require timer > > > > +// services as well as EBC modules that require timer > > services. > > > > +// > > > > +// Copyright (c) 2007 - 2014, Intel Corporation. All > > rights reserved.<BR> > > > > +// > > > > +// SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +// > > > > +// **/ > > > > + > > > > + > > > > +#string STR_MODULE_ABSTRACT #language en- > US > > "Host instance of Timer Library" > > > > + > > > > +#string STR_MODULE_DESCRIPTION #language en- > US > > "An instance of the Timer Library that can be used for > > host based unit tests." > > > > + > > > > diff --git > > > a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > > > b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > > index e954968efc52..bc7b7afa1729 100644 > > --- > > > a/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > > +++ > > > b/UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > > @@ -13,6 +13,7 @@ > > > > > UnitTestLib|UnitTestFrameworkPkg/Library/UnitTestLib/Uni > > tTestLibCmocka.inf > > > > > > > DebugLib|UnitTestFrameworkPkg/Library/Posix/DebugLibPosi > > x/DebugLibPosix.inf > > > > > > > MemoryAllocationLib|UnitTestFrameworkPkg/Library/Posix/M > > emoryAllocationLibPosix/MemoryAllocationLibPosix.inf > > > > + > > > TimerLib|UnitTestFrameworkPkg/Library/Host/BaseTimerLibH > > ost/BaseTimerLibHost.inf > > > > > > > > [BuildOptions] > > > > GCC:*_*_*_CC_FLAGS = -fno-pie > > > > -- > > 2.25.1.vfs.1.1 > > > > > > -=-=-=-=-=-= > > Groups.io Links: You receive all messages sent to this > > group. > > > > View/Reply Online (#62247): > > https://edk2.groups.io/g/devel/message/62247 > > Mute This Topic: https://groups.io/mt/75379678/1643496 > > Group Owner: [email protected] > > Unsubscribe: https://edk2.groups.io/g/devel/unsub > > [[email protected]] > > -=-=-=-=-=-= -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#62251): https://edk2.groups.io/g/devel/message/62251 Mute This Topic: https://groups.io/mt/75379678/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
