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