From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=47649 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pryxk-0002Mc-D2 for qemu-devel@nongnu.org; Tue, 22 Feb 2011 15:36:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pryxi-0003V0-KC for qemu-devel@nongnu.org; Tue, 22 Feb 2011 15:36:00 -0500 Received: from mail-vx0-f173.google.com ([209.85.220.173]:64861) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pryxi-0003UW-GX for qemu-devel@nongnu.org; Tue, 22 Feb 2011 15:35:58 -0500 Received: by vxb41 with SMTP id 41so2133118vxb.4 for ; Tue, 22 Feb 2011 12:35:57 -0800 (PST) Message-ID: <4D641E2C.8070409@codemonkey.ws> Date: Tue, 22 Feb 2011 14:35:56 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH uq/master 00/21] Win32 iothread support References: <1298277820-8817-1-git-send-email-pbonzini@redhat.com> In-Reply-To: <1298277820-8817-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org On 02/21/2011 02:43 AM, Paolo Bonzini wrote: > After gathering the comments about the two series I sent separately, > here is the full series for Win32 iothread support, ready to be > applied to uq/master. > > Patches 1 to 5 are generic Win32 improvements, including the qemu-thread > implementation. Because of complex 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. > > I incorporated all suggestions from Jan. > So why reinvent this instead of just using glib for thread support? Regards, Anthony Liguori > Paolo Bonzini (21): > unlock iothread during WaitForMultipleObjects > implement win32 dynticks timer > use win32 timer queues > replace qemu_thread_equal API with qemu_thread_is_current > 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 > move blocking of signals to qemu_signalfd_init > provide dummy signal init functions for win32 > protect qemu_cpu_kick_self for Win32 > add Win32 IPI service > > Makefile.objs | 4 +- > configure | 2 - > cpu-defs.h | 1 + > cpu-exec.c | 17 ++- > cpus.c | 288 +++++++++++++++++---------------- > hw/apic.c | 1 + > hw/ppc.c | 2 + > hw/sun4m.c | 10 +- > hw/sun4u.c | 4 +- > os-win32.c | 2 + > qemu-thread.c => qemu-thread-posix.c | 40 +++-- > qemu-thread-posix.h | 18 ++ > qemu-thread-win32.c | 261 ++++++++++++++++++++++++++++++ > qemu-thread-win32.h | 21 +++ > qemu-thread.h | 29 ++-- > qemu-timer.c | 88 +++++------ > target-alpha/exec.h | 11 -- > target-arm/exec.h | 13 -- > target-cris/exec.h | 11 -- > target-i386/exec.h | 12 -- > 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/cpu.h | 1 - > target-sh4/exec.h | 11 -- > target-sparc/exec.h | 10 -- > 29 files changed, 559 insertions(+), 353 deletions(-) > rename qemu-thread.c => qemu-thread-posix.c (78%) > create mode 100644 qemu-thread-posix.h > create mode 100644 qemu-thread-win32.c > create mode 100644 qemu-thread-win32.h > >