#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
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
\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
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
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