summaryrefslogtreecommitdiff
path: root/StdLib
diff options
context:
space:
mode:
authordarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2011-11-11 00:32:31 +0000
committerdarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>2011-11-11 00:32:31 +0000
commit8aa163da5ac7bf40d1a3b0612a46504dc56d16a2 (patch)
tree35d16404b59494864d7d04da2c2f0ba9b2889a8b /StdLib
parent4b3d663f7b2f0db316f20c0ee86c7270c1338852 (diff)
downloadedk2-platforms-8aa163da5ac7bf40d1a3b0612a46504dc56d16a2.tar.xz
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
Diffstat (limited to 'StdLib')
-rw-r--r--StdLib/LibC/LibC.inf1
-rw-r--r--StdLib/LibC/Main/Main.c12
-rw-r--r--StdLib/LibC/Time/Time.c50
-rw-r--r--StdLib/LibC/Time/Time.inf1
-rw-r--r--StdLib/StdLib.inc48
5 files changed, 36 insertions, 76 deletions
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
#include <MainData.h>
-#include <sys/EfiSysCall.h>
+#include <unistd.h>
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