#if !defined(_MSC_VER)
#include <unistd.h>
+#elif _MSC_VER < 1900
+#define snprintf _snprintf
#endif
#include <time.h>
#include <time.h>
#include <unistd.h>
#include <math.h>
-#ifdef SMP
+#if defined(SMP) || defined(USE_LOCKING)
#include <pthread.h>
#endif
#endif
#error "You can't specify both LOCK operation!"
#endif
-#ifdef SMP
+#if defined(SMP) || defined(USE_LOCKING)
#define USE_PTHREAD_LOCK
#undef USE_PTHREAD_SPINLOCK
#endif
#endif
#endif
+#ifdef POWER9
+#ifndef YIELDING
+#define YIELDING __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop;\n");
+#endif
+#endif
/*
#ifdef PILEDRIVER
typedef char env_var_t[MAX_PATH];
#define readenv(p, n) 0
#else
-#ifdef OS_WINDOWS
+#if defined(OS_WINDOWS) && !defined(OS_CYGWIN_NT)
typedef char env_var_t[MAX_PATH];
#define readenv(p, n) GetEnvironmentVariable((LPCTSTR)(n), (LPTSTR)(p), sizeof(p))
#else