]> git.sesse.net Git - stockfish/blobdiff - src/platform.h
Rename lock.h to platform.h
[stockfish] / src / platform.h
similarity index 68%
rename from src/lock.h
rename to src/platform.h
index 85d32a5cbb0432753b500dd33e2f989f63ec8a35..26c3abfbb820d8bf999e7999b8214a7523c1689c 100644 (file)
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#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 <pthread.h>
+// 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 <inttypes.h>
+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 <inttypes.h>
+#endif
+
+#if !defined(_WIN32) && !defined(_WIN64) // Linux - Unix
 
+#  include <sys/time.h>
+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 <pthread.h>
 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 <sys/timeb.h>
+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)