X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fplatform.h;fp=src%2Flock.h;h=26c3abfbb820d8bf999e7999b8214a7523c1689c;hp=85d32a5cbb0432753b500dd33e2f989f63ec8a35;hb=b356e0fae3b78e39af2ae8aca6ca6197e8669819;hpb=06f33ff1ee0c0e8345cb6d5b84ce5db9f043203d
diff --git a/src/lock.h b/src/platform.h
similarity index 68%
rename from src/lock.h
rename to src/platform.h
index 85d32a5c..26c3abfb 100644
--- a/src/lock.h
+++ b/src/platform.h
@@ -17,13 +17,40 @@
along with this program. If not, see .
*/
-#if !defined(LOCK_H_INCLUDED)
-#define LOCK_H_INCLUDED
+#if !defined(PLATFORM_H_INCLUDED)
+#define PLATFORM_H_INCLUDED
-#if !defined(_WIN32) && !defined(_WIN64)
+#if defined(_MSC_VER)
-# include
+// Disable some silly and noisy warning from MSVC compiler
+#pragma warning(disable: 4127) // Conditional expression is constant
+#pragma warning(disable: 4146) // Unary minus operator applied to unsigned type
+#pragma warning(disable: 4800) // Forcing value to bool 'true' or 'false'
+#pragma warning(disable: 4996) // Function _ftime() may be unsafe
+
+// MSVC does not support
+typedef signed __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef signed __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef signed __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef signed __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+
+#else
+# include
+#endif
+
+#if !defined(_WIN32) && !defined(_WIN64) // Linux - Unix
+# include
+typedef timeval sys_time_t;
+
+inline void system_time(sys_time_t* t) { gettimeofday(t, NULL); }
+inline uint64_t time_to_msec(const sys_time_t& t) { return t.tv_sec * 1000LL + t.tv_usec / 1000; }
+
+# include
typedef pthread_mutex_t Lock;
typedef pthread_cond_t WaitCondition;
typedef pthread_t ThreadHandle;
@@ -41,7 +68,13 @@ typedef void*(*start_fn)(void*);
# define thread_create(x,f,id) !pthread_create(&(x),NULL,(start_fn)f,&(id))
# define thread_join(x) pthread_join(x, NULL)
-#else
+#else // Windows and MinGW
+
+# include
+typedef _timeb sys_time_t;
+
+inline void system_time(sys_time_t* t) { _ftime(t); }
+inline uint64_t time_to_msec(const sys_time_t& t) { return t.time * 1000LL + t.millitm; }
#if !defined(NOMINMAX)
# define NOMINMAX // disable macros min() and max()
@@ -73,4 +106,4 @@ typedef HANDLE ThreadHandle;
#endif
-#endif // !defined(LOCK_H_INCLUDED)
+#endif // !defined(PLATFORM_H_INCLUDED)