On Mon, Oct 29, 2012 at 4:51 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: > Il 29/10/2012 00:48, Liu Ping Fan ha scritto: >> Signed-off-by: Liu Ping Fan <pingf...@linux.vnet.ibm.com> >> --- >> cpus.c | 3 ++ >> exec.c | 58 >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> qemu-thread.h | 8 +++++++ >> vl.c | 1 + >> 4 files changed, 70 insertions(+), 0 deletions(-) >> >> diff --git a/cpus.c b/cpus.c >> index 191cbf5..e67d80f 100644 >> --- a/cpus.c >> +++ b/cpus.c >> @@ -733,6 +733,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg) >> >> qemu_mutex_lock(&qemu_global_mutex); >> qemu_thread_get_self(cpu->thread); >> + qemu_thread_init_context(); >> env->thread_id = qemu_get_thread_id(); >> cpu_single_env = env; >> >> @@ -774,6 +775,7 @@ static void *qemu_dummy_cpu_thread_fn(void *arg) >> >> qemu_mutex_lock_iothread(); >> qemu_thread_get_self(cpu->thread); >> + qemu_thread_init_context(); >> env->thread_id = qemu_get_thread_id(); >> >> sigemptyset(&waitset); >> @@ -813,6 +815,7 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) >> >> qemu_tcg_init_cpu_signals(); >> qemu_thread_get_self(cpu->thread); >> + qemu_thread_init_context(); >> >> /* signal CPU creation */ >> qemu_mutex_lock(&qemu_global_mutex); >> diff --git a/exec.c b/exec.c >> index 46da08c..ea672c6 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -3449,6 +3449,49 @@ static bool >> address_space_section_lookup_ref(AddressSpace *as, >> return safe_ref; >> } >> >> +typedef struct ThreadContext { >> + DispatchType dispatch_type; >> + unsigned int mmio_req_pending; >> +} ThreadContext; >> + >> +static __thread ThreadContext *thread_context; >> + >> +void qemu_thread_init_context(void) >> +{ >> + thread_context = g_new(ThreadContext, 1); >> + thread_context->dispatch_type = DISPATCH_INIT; >> + thread_context->mmio_req_pending = 0; >> +} > > No need for this: > > static __thread ThreadContext thread_context = { > .dispatch_type = DISPATCH_INIT, > .mmio_req_pending = 0 > }; > applied, thanks.
> Paolo > >