X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc.cpp;h=5912514c23dbadaf63133281c130497fe3a63a72;hb=a695ed65a8b98c94a928862be76500485b38c414;hp=610cc2402778768a54d4125268c0cd9aa5883ac4;hpb=0095f423f2fdb2be7c4a5e1bcf39f18599af5e1e;p=stockfish
diff --git a/src/misc.cpp b/src/misc.cpp
index 610cc240..5912514c 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -17,7 +17,14 @@
along with this program. If not, see .
*/
-#if !defined(_MSC_VER)
+#if defined(_MSC_VER)
+
+#define _CRT_SECURE_NO_DEPRECATE
+#define NOMINMAX // disable macros min() and max()
+#include
+#include
+
+#else
# include
# include
@@ -26,13 +33,6 @@
# include
# endif
-#else
-
-#define _CRT_SECURE_NO_DEPRECATE
-#define NOMINMAX // disable macros min() and max()
-#include
-#include
-
#endif
#if !defined(NO_PREFETCH)
@@ -134,9 +134,9 @@ void dbg_before() { dbg_hit_on(false); }
void dbg_after() { dbg_hit_on(true); dbg_hit_cnt0--; }
-/// get_system_time() returns the current system time, measured in milliseconds
+/// system_time() returns the current system time, measured in milliseconds
-int get_system_time() {
+int system_time() {
#if defined(_MSC_VER)
struct _timeb t;
@@ -175,6 +175,33 @@ int cpu_count() {
}
+/// timed_wait() waits for msec milliseconds. It is mainly an helper to wrap
+/// conversion from milliseconds to struct timespec, as used by pthreads.
+
+void timed_wait(WaitCondition* sleepCond, Lock* sleepLock, int msec) {
+
+#if defined(_MSC_VER)
+ int tm = msec;
+#else
+ struct timeval t;
+ struct timespec abstime, *tm = &abstime;
+
+ gettimeofday(&t, NULL);
+
+ abstime.tv_sec = t.tv_sec + (msec / 1000);
+ abstime.tv_nsec = (t.tv_usec + (msec % 1000) * 1000) * 1000;
+
+ if (abstime.tv_nsec > 1000000000LL)
+ {
+ abstime.tv_sec += 1;
+ abstime.tv_nsec -= 1000000000LL;
+ }
+#endif
+
+ cond_timedwait(sleepCond, sleepLock, tm);
+}
+
+
/// prefetch() preloads the given address in L1/L2 cache. This is a non
/// blocking function and do not stalls the CPU waiting for data to be
/// loaded from memory, that can be quite slow.