Am 10.02.2011 10:54, schrieb Paolo Bonzini:
On 02/09/2011 11:16 PM, Stefan Weil wrote:
The patch is available here:
http://repo.or.cz/w/qemu/ar7.git/commitdiff/aabf11dc0a938b84d76d7c147cbf0445d7bee297
[snip]
diff --git a/os-win32.c b/os-win32.c
index b214e6a..7778366 100644
--- a/os-win32.c
+++ b/os-win32.c
@@ -36,6 +36,45 @@
 /***********************************************************/
 /* Functions missing in mingw */

+#if defined(CONFIG_THREAD)
+
+int clock_gettime(clockid_t clock_id, struct timespec *pTimespec)
+{
+  int result = 0;
+  if (clock_id == CLOCK_REALTIME && pTimespec != 0) {
+    DWORD t = GetTickCount();
+    const unsigned cps = 1000;
+    struct timespec ts;
+    ts.tv_sec  = t / cps;
+    ts.tv_nsec = (t % cps) * (1000000000UL / cps);
+    *pTimespec = ts;
+  } else {
+    errno = EINVAL;
+    result = -1;
+  }
+  return result;
+}

Why is this needed? The only user of clock_gettime in the POSIX case is using CLOCK_MONOTONIC, and actually has a Win32 version already.


qemu-thread.c uses clock_gettime(CLOCK_REALTIME, ...)



+int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset)
+{
+    /* Dummy, do nothing. */
+    return EINVAL;
+}
+
+int sigfillset(sigset_t *set)
+{
+    int result = 0;
+    if (set) {
+        *(set) = (sigset_t)(-1);
+    } else {
+        errno = EINVAL;
+        result = -1;
+    }
+    return result;
+}

Instead of these, it's better to provide a Win32 implementation of mutexes and condvars. I'll submit it next week hopefully.

Paolo


That's good news. My patch was only a quick hack to make threaded VNC work.

Thanks,
Stefan



Reply via email to