diff options
author | Weblate <42@minetest.ru> | 2013-03-30 19:49:52 +0100 |
---|---|---|
committer | Weblate <42@minetest.ru> | 2013-03-30 19:49:52 +0100 |
commit | a0566270d9fa075afa36a7e3e68c690b1b23ba90 (patch) | |
tree | 6bc88127ee67b7bf4d6a2d6f9d0a9e5f997d1dd1 /src/porting.h | |
parent | 0d83bdc3aa9f1077836aacb833ac4ad9bbb9a4f4 (diff) | |
parent | 1aa50b13622c1e264044839ecdf0152670dae6ce (diff) | |
download | minetest-a0566270d9fa075afa36a7e3e68c690b1b23ba90.tar.gz minetest-a0566270d9fa075afa36a7e3e68c690b1b23ba90.tar.bz2 minetest-a0566270d9fa075afa36a7e3e68c690b1b23ba90.zip |
Merge remote branch 'origin/master'
Diffstat (limited to 'src/porting.h')
-rw-r--r-- | src/porting.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/porting.h b/src/porting.h index d7d107340..bcce96ef7 100644 --- a/src/porting.h +++ b/src/porting.h @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlichttypes.h" // u32 #include "debug.h" #include "constants.h" +#include "gettime.h" #ifdef _MSC_VER #define SWPRINTF_CHARSTRING L"%S" @@ -153,18 +154,65 @@ bool threadSetPriority(threadid_t tid, int prio); */ #ifdef _WIN32 // Windows #include <windows.h> + + inline u32 getTimeS() + { + return GetTickCount() / 1000; + } + inline u32 getTimeMs() { return GetTickCount(); } + + inline u32 getTimeUs() + { + LARGE_INTEGER freq, t; + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&t); + return (double)(t.QuadPart) / ((double)(freq.QuadPart) / 1000000.0); + } + + inline u32 getTimeNs() + { + LARGE_INTEGER freq, t; + QueryPerformanceFrequency(&freq); + QueryPerformanceCounter(&t); + return (double)(t.QuadPart) / ((double)(freq.QuadPart) / 1000000000.0); + } + #else // Posix #include <sys/time.h> + #include <time.h> + + inline u32 getTimeS() + { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec; + } + inline u32 getTimeMs() { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec * 1000 + tv.tv_usec / 1000; } + + inline u32 getTimeUs() + { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000000 + tv.tv_usec; + } + + inline u32 getTimeNs() + { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + return ts.tv_sec * 1000000000 + ts.tv_nsec; + } + /*#include <sys/timeb.h> inline u32 getTimeMs() { @@ -174,6 +222,22 @@ bool threadSetPriority(threadid_t tid, int prio); }*/ #endif +inline u32 getTime(TimePrecision prec) +{ + switch (prec) { + case PRECISION_SECONDS: + return getTimeS(); + case PRECISION_MILLI: + return getTimeMs(); + case PRECISION_MICRO: + return getTimeUs(); + case PRECISION_NANO: + return getTimeNs(); + } + return 0; +} + + } // namespace porting #endif // PORTING_HEADER |