Thanks, applied all.
On Sat, Mar 12, 2011 at 6:43 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Here is again the full series for Win32 iothread support. It should be > ready now. > > Patches 1 to 5 are generic Win32 improvements, including the qemu-thread > implementation. To simplify the dependencies, I think it's better if > this part is also routed through uq/master. > > Patches 6 to 8 are generic threading improvements, including using > PTHREAD_MUTEX_ERRORCHECK as suggested by Jan. > > Patches 9 to 16 eliminate polling, replacing condition variable > timedwait with wait. > > Patch 17 removes a redundant condition from the TCG cpu_exec_all > function. > > Patches 18 to 20 add all necessary stubs to make iothread compile > with Win32, except the IPI calls. These are provided by patch 21. > > Tested on Wine and Linux, not on "real" Windows. The series introduces > a dependency on Windows 2K or newer. I don't think either 95/98/ME > or Windows NT 3.x are reasonable host systems for QEMU, anyway. > > v1->v2 > I incorporated all suggestions from Jan, including his renaming patch > for qemu_*_is_self; sh4 now doesn't have a special cpu_halted anymore. > > v2->v3 > Fixed structure naming, renamed qemu_signalfd_init, dropped ownership > tracking in QemuMutex for now. > > v3->v4 > Consistently using qemu_free. > > Jan Kiszka (1): > Refactor thread retrieval and check > > Paolo Bonzini (20): > unlock iothread during WaitForMultipleObjects > implement win32 dynticks timer > use win32 timer queues > add win32 qemu-thread implementation > include qemu-thread.h early > add assertions on the owner of a QemuMutex > remove CONFIG_THREAD > inline cpu_halted into sole caller > always qemu_cpu_kick after unhalting a cpu > exit round-robin vcpu loop if cpu->stopped is true > always signal pause_cond after stopping a VCPU > do not use timedwait on qemu_halt_cond > do not use timedwait on qemu_system_cond > do not use timedwait on qemu_pause_cond > do not use timedwait on qemu_cpu_cond > iothread stops the vcpu thread via IPI > merge all signal initialization with qemu_signalfd_init, rename > provide dummy signal init functions for win32 > protect qemu_cpu_kick_self for Win32 > add Win32 IPI service > > Makefile.objs | 4 +- > configure | 2 - > cpu-exec.c | 9 +- > cpus.c | 298 > +++++++++++++++++----------------- > exec.c | 2 +- > hw/ppc.c | 2 + > hw/sun4m.c | 10 +- > hw/sun4u.c | 4 +- > os-win32.c | 2 + > qemu-common.h | 2 +- > qemu-thread.c => qemu-thread-posix.c | 21 +-- > qemu-thread-posix.h | 17 ++ > qemu-thread-win32.c | 260 +++++++++++++++++++++++++++++ > qemu-thread-win32.h | 21 +++ > qemu-thread.h | 31 ++-- > qemu-timer.c | 89 +++++------ > target-alpha/exec.h | 11 -- > target-arm/exec.h | 13 -- > target-cris/exec.h | 11 -- > target-i386/exec.h | 12 -- > target-i386/kvm.c | 4 +- > target-m68k/exec.h | 10 -- > target-microblaze/exec.h | 11 -- > target-mips/exec.h | 11 -- > target-ppc/exec.h | 11 -- > target-s390x/exec.h | 12 -- > target-s390x/kvm.c | 1 + > target-sh4/exec.h | 10 -- > target-sparc/exec.h | 10 -- > ui/vnc-jobs-async.c | 2 +- > 30 files changed, 541 insertions(+), 362 deletions(-) > rename qemu-thread.c => qemu-thread-posix.c (90%) > create mode 100644 qemu-thread-posix.h > create mode 100644 qemu-thread-win32.c > create mode 100644 qemu-thread-win32.h > > -- > 1.7.4 > >