summaryrefslogtreecommitdiff
path: root/u_platform.c
diff options
context:
space:
mode:
Diffstat (limited to 'u_platform.c')
-rw-r--r--u_platform.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/u_platform.c b/u_platform.c
new file mode 100644
index 0000000..a3c8a93
--- /dev/null
+++ b/u_platform.c
@@ -0,0 +1,56 @@
+/*
+=======================================================================
+This file is part of Redman's RT.
+
+Redman's RT is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Redman's RT is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Redman's RT. If not, see <http://www.gnu.org/licenses/>.
+=======================================================================
+*/
+
+#include "common.h"
+
+#ifdef PLATFORM_POSIX
+ #include <time.h>
+#endif
+
+// U_Clock: measure time with 1ms precision
+uint64_t U_Clock( void )
+{
+ return SDL_GetTicks( );
+}
+
+// U_Microclock: measure time with 1us precision
+uint64_t U_Microclock( void )
+{
+#ifdef PLATFORM_POSIX
+ struct timespec t;
+ clock_gettime( CLOCK_MONOTONIC, &t );
+ return t.tv_sec * 1000000 + t.tv_nsec / 1000;
+#else
+ //TODO: win32 timers here
+ return SDL_GetTicks( ) * 1000;
+#endif
+}
+
+// U_Nanoclock: measure time with 1ns precision
+uint64_t U_Nanoclock( void )
+{
+#ifdef PLATFORM_POSIX
+ struct timespec t;
+ clock_gettime( CLOCK_MONOTONIC, &t );
+ return t.tv_sec * 1000000000 + t.tv_nsec;
+#else
+ //TODO: win32 timers here
+ return SDL_GetTicks( ) * 1000000;
+#endif
+}