Quellcode durchsuchen

Fix windows compilation of condition code

Nick Mathewson vor 10 Jahren
Ursprung
Commit
9fdc0d0594
2 geänderte Dateien mit 7 neuen und 5 gelöschten Zeilen
  1. 0 1
      src/common/compat.c
  2. 7 4
      src/common/compat_winthreads.c

+ 0 - 1
src/common/compat.c

@@ -27,7 +27,6 @@
 #include "compat.h"
 
 #ifdef _WIN32
-#include <process.h>
 #include <windows.h>
 #include <sys/locking.h>
 #endif

+ 7 - 4
src/common/compat_winthreads.c

@@ -9,6 +9,10 @@
 #include "util.h"
 #include "container.h"
 #include "torlog.h"
+#include <process.h>
+
+/* This value is more or less total cargo-cult */
+#define SPIN_COUNT 2000
 
 /** Minimalist interface to run a void function in the background.  On
  * Unix calls fork, on win32 calls beginthread.  Returns -1 on failure.
@@ -108,7 +112,6 @@ tor_cond_signal_impl(tor_cond_t *cond, int broadcast)
   cond->generation++;
   SetEvent(cond->event);
   LeaveCriticalSection(&cond->lock);
-  return 0;
 }
 void
 tor_cond_signal_one(tor_cond_t *cond)
@@ -122,15 +125,15 @@ tor_cond_signal_all(tor_cond_t *cond)
 }
 
 int
-tor_cond_wait(tor_cond_t *cond, tor_mutex_t *lock, const struct timeval *tv)
+tor_cond_wait(tor_cond_t *cond, tor_mutex_t *lock_, const struct timeval *tv)
 {
-  CRITICAL_SECTION *lock = &lock->mutex;
+  CRITICAL_SECTION *lock = &lock_->mutex;
   int generation_at_start;
   int waiting = 1;
   int result = -1;
   DWORD ms = INFINITE, ms_orig = INFINITE, startTime, endTime;
   if (tv)
-    ms_orig = ms = evutil_tv_to_msec_(tv);
+    ms_orig = ms = tv->tv_sec*1000 + (tv->tv_usec+999)/1000;
 
   EnterCriticalSection(&cond->lock);
   ++cond->n_waiting;