From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:60170) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Swjas-0000DW-KZ for qemu-devel@nongnu.org; Wed, 01 Aug 2012 20:48:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Swjar-000764-KK for qemu-devel@nongnu.org; Wed, 01 Aug 2012 20:48:50 -0400 Received: from cantor2.suse.de ([195.135.220.15]:32960 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Swjar-00075q-9o for qemu-devel@nongnu.org; Wed, 01 Aug 2012 20:48:49 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Thu, 2 Aug 2012 02:48:35 +0200 Message-Id: <1343868517-11852-3-git-send-email-afaerber@suse.de> In-Reply-To: <1343868517-11852-1-git-send-email-afaerber@suse.de> References: <1343868517-11852-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH for-1.2 2/4] cpu: Move CPU_COMMON_THREAD into CPUState List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= , anthony@codemonkey.ws CPU_COMMON_THREAD was only used for Windows, adding an hThread field to CPU_COMMON. Move the field into QOM CPUState and change its type to HANDLE, which it is assigned from. This requires Windows headers, pulled in through qemu-thread.h. Signed-off-by: Andreas F=C3=A4rber --- cpu-defs.h | 9 --------- cpus.c | 10 +++++++--- include/qemu/cpu.h | 5 +++++ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cpu-defs.h b/cpu-defs.h index f49e950..d0dd781 100644 --- a/cpu-defs.h +++ b/cpu-defs.h @@ -151,14 +151,6 @@ typedef struct CPUWatchpoint { QTAILQ_ENTRY(CPUWatchpoint) entry; } CPUWatchpoint; =20 -#ifdef _WIN32 -#define CPU_COMMON_THREAD \ - void *hThread; - -#else -#define CPU_COMMON_THREAD -#endif - #define CPU_TEMP_BUF_NLONGS 128 #define CPU_COMMON = \ struct TranslationBlock *current_tb; /* currently executing TB */ = \ @@ -217,7 +209,6 @@ typedef struct CPUWatchpoint { uint32_t stop; /* Stop request */ = \ uint32_t stopped; /* Artificially stopped */ = \ struct QemuThread *thread; = \ - CPU_COMMON_THREAD = \ struct QemuCond *halt_cond; = \ int thread_kicked; = \ struct qemu_work_item *queued_work_first, *queued_work_last; = \ diff --git a/cpus.c b/cpus.c index 756e624..7042fb5 100644 --- a/cpus.c +++ b/cpus.c @@ -852,9 +852,10 @@ static void qemu_cpu_kick_thread(CPUArchState *env) } #else /* _WIN32 */ if (!qemu_cpu_is_self(env)) { - SuspendThread(env->hThread); + CPUState *cpu =3D ENV_GET_CPU(env); + SuspendThread(cpu->hThread); cpu_signal(0); - ResumeThread(env->hThread); + ResumeThread(cpu->hThread); } #endif } @@ -974,6 +975,9 @@ void resume_all_vcpus(void) static void qemu_tcg_init_vcpu(void *_env) { CPUArchState *env =3D _env; +#ifdef _WIN32 + CPUState *cpu =3D ENV_GET_CPU(env); +#endif =20 /* share a single thread for all cpus with TCG */ if (!tcg_cpu_thread) { @@ -984,7 +988,7 @@ static void qemu_tcg_init_vcpu(void *_env) qemu_thread_create(env->thread, qemu_tcg_cpu_thread_fn, env, QEMU_THREAD_JOINABLE); #ifdef _WIN32 - env->hThread =3D qemu_thread_get_handle(env->thread); + cpu->hThread =3D qemu_thread_get_handle(env->thread); #endif while (env->created =3D=3D 0) { qemu_cond_wait(&qemu_cpu_cond, &qemu_global_mutex); diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h index 78b65b3..5d52e1c 100644 --- a/include/qemu/cpu.h +++ b/include/qemu/cpu.h @@ -21,6 +21,7 @@ #define QEMU_CPU_H =20 #include "qemu/object.h" +#include "qemu-thread.h" =20 /** * SECTION:cpu @@ -61,6 +62,10 @@ struct CPUState { Object parent_obj; /*< public >*/ =20 +#ifdef _WIN32 + HANDLE hThread; +#endif + /* TODO Move common fields from CPUArchState here. */ }; =20 --=20 1.7.7