]> git.proxmox.com Git - mirror_edk2.git/commitdiff
StdLib: Eliminate TimerLib dependencies.
authordarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 11 Nov 2011 00:32:31 +0000 (00:32 +0000)
committerdarylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 11 Nov 2011 00:32:31 +0000 (00:32 +0000)
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
StdLib/LibC/Main/Main.c
StdLib/LibC/Time/Time.c
StdLib/LibC/Time/Time.inf
StdLib/StdLib.inc

index 451b9b0e649957441876d6736a2bd18d183e00ec..23647cb42851c6b1793c60d16e96b11139851bca 100644 (file)
   BaseLib\r
   BaseMemoryLib\r
   MemoryAllocationLib\r
-  TimerLib\r
   LibStdLib\r
   LibStdio\r
   LibString\r
index 3a5cca5b2461cc379a8a41c0204c7b76bff51243..59a72bd6308d26d5229382dd6a1f3b1d081eac15 100644 (file)
@@ -27,8 +27,9 @@
 #include  <stdio.h>\r
 #include  <stdlib.h>\r
 #include  <string.h>\r
+#include  <time.h>\r
 #include  <MainData.h>\r
-#include  <sys/EfiSysCall.h>\r
+#include  <unistd.h>\r
 \r
 extern int main( int, char**);\r
 extern int __sse2_available;\r
@@ -149,13 +150,8 @@ ShellAppMain (
     errno                 = 0;\r
     EFIerrno              = 0;\r
 \r
-#ifdef NT32dvm\r
-    gMD->ClocksPerSecond  = 1;  // For NT32 only\r
-    gMD->AppStartTime     = 1;  // For NT32 only\r
-#else\r
-    gMD->ClocksPerSecond = (clock_t)GetPerformanceCounterProperties( NULL, NULL);\r
-    gMD->AppStartTime = (clock_t)GetPerformanceCounter();\r
-#endif  /* NT32 dvm */\r
+    gMD->ClocksPerSecond  = 1;\r
+    gMD->AppStartTime     = (clock_t)((UINT32)time(NULL));\r
 \r
     // Initialize file descriptors\r
     mfd = gMD->fdarray;\r
index e3eccb593bae3cd144426d7239ecf44678fc83b7..0296a5dc93910871cd3d10e2382fbed2168016e7 100644 (file)
@@ -180,34 +180,6 @@ timesub(
 \r
 /* ###############  Time Manipulation Functions  ########################## */\r
 \r
-/** The clock function determines the processor time used.\r
-\r
-    @return   The clock function returns the implementation's best\r
-              approximation to the processor time used by the program since the\r
-              beginning of an implementation-defined era related only to the\r
-              program invocation.  To determine the time in seconds, the value\r
-              returned by the clock function should be divided by the value of\r
-              the macro CLOCKS_PER_SEC.  If the processor time used is not\r
-              available or its value cannot be represented, the function\r
-              returns the value (clock_t)(-1).\r
-\r
-              On IA32 or X64 platforms, the value returned is the number of\r
-              CPU TimeStamp Counter ticks since the appliation started.\r
-**/\r
-clock_t\r
-clock(void)\r
-{\r
-#ifndef NT32dvm\r
-  clock_t   temp;\r
-\r
-  temp = (clock_t)GetPerformanceCounter();\r
-\r
-  return temp - gMD->AppStartTime;\r
-#else\r
-  return (clock_t)-1;\r
-#endif  /* NT32dvm */\r
-}\r
-\r
 /**\r
 **/\r
 double\r
@@ -591,6 +563,28 @@ time(time_t *timer)
   return CalTime;   // Return calendar time in microseconds\r
 }\r
 \r
+/** The clock function determines the processor time used.\r
+\r
+    @return   The clock function returns the implementation's best\r
+              approximation to the processor time used by the program since the\r
+              beginning of an implementation-defined era related only to the\r
+              program invocation.  To determine the time in seconds, the value\r
+              returned by the clock function should be divided by the value of\r
+              the macro CLOCKS_PER_SEC.  If the processor time used is not\r
+              available or its value cannot be represented, the function\r
+              returns the value (clock_t)(-1).\r
+**/\r
+clock_t\r
+clock(void)\r
+{\r
+  clock_t   retval;\r
+  time_t    temp;\r
+\r
+  temp = time(NULL);\r
+  retval = ((clock_t)((UINT32)temp)) - gMD->AppStartTime;\r
+  return retval;\r
+}\r
+\r
 /* #################  Time Conversion Functions  ########################## */\r
 /*\r
     Except for the strftime function, these functions each return a pointer to\r
index 3ad226951d6cf9c8d456cf74f4111ee6f8f0e9d6..84a47048e48ed896cf0d15d7f790fbb86683bb0c 100644 (file)
@@ -43,7 +43,6 @@
 \r
 [LibraryClasses]\r
   UefiLib\r
-  TimerLib\r
   BaseLib\r
   UefiRuntimeServicesTableLib\r
 \r
index 4e9ca1d2e76f19069e355c5442ae50d65e462438..fa1865659ba80d36fa80c98cdc5a820c48873d29 100644 (file)
   DevShell|StdLib/LibC/Uefi/Devices/daShell.inf\r
   DevUtility|StdLib/LibC/Uefi/Devices/daUtility.inf\r
 \r
-###\r
-# Select the correct TimerLib instance depending upon whether running under\r
-# an emulation environment, or not.\r
-!ifndef $(EMULATE)\r
-  # Not running in an Emulation Environment\r
-[LibraryClasses.IA32.UEFI_APPLICATION]\r
-  TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf\r
-#  TimerLib|PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf\r
-\r
-[LibraryClasses.X64.UEFI_APPLICATION]\r
-  TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf\r
-#  TimerLib|PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf\r
-\r
-[LibraryClasses.IPF.UEFI_APPLICATION]\r
-  PalLib|MdePkg/Library/UefiPalLib/UefiPalLib.inf\r
-  TimerLib|MdePkg/Library/SecPeiDxeTimerLibCpu/SecPeiDxeTimerLibCpu.inf\r
-\r
-[LibraryClasses.ARM.UEFI_APPLICATION]\r
-  NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf\r
-  TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf\r
-\r
-\r
-!else\r
-  # Use this instance if Running in an Emulation Environment.\r
-[LibraryClasses.Common.UEFI_APPLICATION]\r
-  TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf\r
-\r
 [LibraryClasses.ARM.UEFI_APPLICATION]\r
   NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf\r
 \r
-!endif\r
-\r
 [Components]\r
 # BaseLib and BaseMemoryLib need to be built with the /GL- switch when using the Microsoft\r
 # tool chain.  This is required so that the library functions can be resolved during\r
   # These Build Options are used when building the Standard Libraries to be run\r
   # on real hardware.\r
   INTEL:*_*_*_CC_FLAGS      = /Qfreestanding\r
-   MSFT:*_*_*_CC_FLAGS      = /X /Zc:wchar_t /D NT32dvm\r
+   MSFT:*_*_*_CC_FLAGS      = /X /Zc:wchar_t\r
     GCC:*_*_*_CC_FLAGS      = -nostdinc -nostdlib\r
-    RVCT:*_*_*_CC_FLAGS      = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm -DNT32dvm\r
-  ARMGCC:*_*_*_CC_FLAGS      = -nostdinc -nostdlib -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length -DNT32dvm\r
+    RVCT:*_*_*_CC_FLAGS      = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm\r
+  ARMGCC:*_*_*_CC_FLAGS      = -nostdinc -nostdlib -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length\r
 \r
 !else\r
   # The Build Options, below, are only used when building the Standard Libraries\r
-  # to be run under an emulation environment.  They disable the clock() system call\r
-  # which is currently incompatible with the most emulation environments.\r
-  # Select the correct TimerLib instance, above.\r
-  INTEL:*_*_IA32_CC_FLAGS     = /Od /D NT32dvm\r
-   MSFT:*_*_IA32_CC_FLAGS     = /Od /D NT32dvm\r
-    GCC:*_*_IA32_CC_FLAGS     = -O0 -DNT32dvm\r
+  # to be run under an emulation environment.\r
+  # They disable optimization which facillitates debugging under the Emulation environment.\r
+  INTEL:*_*_IA32_CC_FLAGS     = /Od\r
+   MSFT:*_*_IA32_CC_FLAGS     = /Od\r
+    GCC:*_*_IA32_CC_FLAGS     = -O0\r
+    RVCT:*_*_*_CC_FLAGS      = --library_interface=none -J$(WORKSPACE)/StdLib/Include -J$(WORKSPACE)/StdLib/Include/Arm\r
+  ARMGCC:*_*_*_CC_FLAGS      = -O0 -Wno-unknown-pragmas -Wno-unused -Wno-format-zero-length\r
 !endif\r