From 8aa163da5ac7bf40d1a3b0612a46504dc56d16a2 Mon Sep 17 00:00:00 2001 From: darylm503 Date: Fri, 11 Nov 2011 00:32:31 +0000 Subject: StdLib: Eliminate TimerLib dependencies. Implement the clock() function using the EFI time-of-day clock instead of a TimerLib instance. Signed-off-by: darylm503 Reviewed-by: jljusten Reviewed-by: geekboy15a git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12683 6f19259b-4bc3-4df7-8a09-765794883524 --- StdLib/LibC/LibC.inf | 1 - StdLib/LibC/Main/Main.c | 12 ++++-------- StdLib/LibC/Time/Time.c | 50 +++++++++++++++++++++-------------------------- StdLib/LibC/Time/Time.inf | 1 - StdLib/StdLib.inc | 48 ++++++++++----------------------------------- 5 files changed, 36 insertions(+), 76 deletions(-) (limited to 'StdLib') diff --git a/StdLib/LibC/LibC.inf b/StdLib/LibC/LibC.inf index 451b9b0e64..23647cb428 100644 --- a/StdLib/LibC/LibC.inf +++ b/StdLib/LibC/LibC.inf @@ -100,7 +100,6 @@ BaseLib BaseMemoryLib MemoryAllocationLib - TimerLib LibStdLib LibStdio LibString diff --git a/StdLib/LibC/Main/Main.c b/StdLib/LibC/Main/Main.c index 3a5cca5b24..59a72bd630 100644 --- a/StdLib/LibC/Main/Main.c +++ b/StdLib/LibC/Main/Main.c @@ -27,8 +27,9 @@ #include #include #include +#include #include -#include +#include extern int main( int, char**); extern int __sse2_available; @@ -149,13 +150,8 @@ ShellAppMain ( errno = 0; EFIerrno = 0; -#ifdef NT32dvm - gMD->ClocksPerSecond = 1; // For NT32 only - gMD->AppStartTime = 1; // For NT32 only -#else - gMD->ClocksPerSecond = (clock_t)GetPerformanceCounterProperties( NULL, NULL); - gMD->AppStartTime = (clock_t)GetPerformanceCounter(); -#endif /* NT32 dvm */ + gMD->ClocksPerSecond = 1; + gMD->AppStartTime = (clock_t)((UINT32)time(NULL)); // Initialize file descriptors mfd = gMD->fdarray; diff --git a/StdLib/LibC/Time/Time.c b/StdLib/LibC/Time/Time.c index e3eccb593b..0296a5dc93 100644 --- a/StdLib/LibC/Time/Time.c +++ b/StdLib/LibC/Time/Time.c @@ -180,34 +180,6 @@ timesub( /* ############### Time Manipulation Functions ########################## */ -/** The clock function determines the processor time used. - - @return The clock function returns the implementation's best - approximation to the processor time used by the program since the - beginning of an implementation-defined era related only to the - program invocation. To determine the time in seconds, the value - returned by the clock function should be divided by the value of - the macro CLOCKS_PER_SEC. If the processor time used is not - available or its value cannot be represented, the function - returns the value (clock_t)(-1). - - On IA32 or X64 platforms, the value returned is the number of - CPU TimeStamp Counter ticks since the appliation started. -**/ -clock_t -clock(void) -{ -#ifndef NT32dvm - clock_t temp; - - temp = (clock_t)GetPerformanceCounter(); - - return temp - gMD->AppStartTime; -#else - return (clock_t)-1; -#endif /* NT32dvm */ -} - /** **/ double @@ -591,6 +563,28 @@ time(time_t *timer) return CalTime; // Return calendar time in microseconds } +/** The clock function determines the processor time used. + + @return The clock function returns the implementation's best + approximation to the processor time used by the program since the + beginning of an implementation-defined era related only to the + program invocation. To determine the time in seconds, the value + returned by the clock function should be divided by the value of + the macro CLOCKS_PER_SEC. If the processor time used is not + available or its value cannot be represented, the function + returns the value (clock_t)(-1). +**/ +clock_t +clock(void) +{ + clock_t retval; + time_t temp; + + temp = time(NULL); + retval = ((clock_t)((UINT32)temp)) - gMD->AppStartTime; + return retval; +} + /* ################# Time Conversion Functions ########################## */ /* Except for the strftime function, these functions each return a pointer to diff --git a/StdLib/LibC/Time/Time.inf b/StdLib/LibC/Time/Time.inf index 3ad226951d..84a47048e4 100644 --- a/StdLib/LibC/Time/Time.inf +++ b/StdLib/LibC/Time/Time.inf @@ -43,7 +43,6 @@ [LibraryClasses] UefiLib - TimerLib BaseLib UefiRuntimeServicesTableLib diff --git a/StdLib/StdLib.inc b/StdLib/StdLib.inc index 4e9ca1d2e7..fa1865659b 100644 --- a/StdLib/StdLib.inc +++ b/StdLib/StdLib.inc @@ -56,38 +56,9 @@ DevShell|StdLib/LibC/Uefi/Devices/daShell.inf DevUtility|StdLib/LibC/Uefi/Devices/daUtility.inf -### -# Select the correct TimerLib instance depending upon whether running under -# an emulation environment, or not. -!ifndef $(EMULATE) - # Not running in an Emulation Environment -[LibraryClasses.IA32.UEFI_APPLICATION] - TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf -# TimerLib|PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf - -[LibraryClasses.X64.UEFI_APPLICATION] - TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf -# TimerLib|PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf - -[LibraryClasses.IPF.UEFI_APPLICATION] - PalLib|MdePkg/Library/UefiPalLib/UefiPalLib.inf - TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf - -[LibraryClasses.ARM.UEFI_APPLICATION] - NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf - TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf - - -!else - # Use this instance if Running in an Emulation Environment. -[LibraryClasses.Common.UEFI_APPLICATION] - TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf - [LibraryClasses.ARM.UEFI_APPLICATION] NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf -!endif - [Components] # BaseLib and BaseMemoryLib need to be built with the /GL- switch when using the Microsoft # tool chain. This is required so that the library functions can be resolved during @@ -120,17 +91,18 @@ # These Build Options are used when building the Standard Libraries to be run # on real hardware. INTEL:*_*_*_CC_FLAGS = /Qfreestanding - MSFT:*_*_*_CC_FLAGS = /X /Zc:wchar_t /D NT32dvm + MSFT:*_*_*_CC_FLAGS = /X /Zc:wchar_t GCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib - RVCT:*_*_*_CC_FLAGS = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm -DNT32dvm - ARMGCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length -DNT32dvm + RVCT:*_*_*_CC_FLAGS = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm + ARMGCC:*_*_*_CC_FLAGS = -nostdinc -nostdlib -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length !else # The Build Options, below, are only used when building the Standard Libraries - # to be run under an emulation environment. They disable the clock() system call - # which is currently incompatible with the most emulation environments. - # Select the correct TimerLib instance, above. - INTEL:*_*_IA32_CC_FLAGS = /Od /D NT32dvm - MSFT:*_*_IA32_CC_FLAGS = /Od /D NT32dvm - GCC:*_*_IA32_CC_FLAGS = -O0 -DNT32dvm + # to be run under an emulation environment. + # They disable optimization which facillitates debugging under the Emulation environment. + INTEL:*_*_IA32_CC_FLAGS = /Od + MSFT:*_*_IA32_CC_FLAGS = /Od + GCC:*_*_IA32_CC_FLAGS = -O0 + RVCT:*_*_*_CC_FLAGS = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm + ARMGCC:*_*_*_CC_FLAGS = -O0 -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length !endif -- cgit v1.2.3