[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for no
From: |
Dr. David Alan Gilbert |
Subject: |
[Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now) |
Date: |
Mon, 3 Oct 2011 17:33:56 +0100 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
Make cpu_single_env thread local (Linux only for now)
* Fixes some user space threading issues (esp those triggered
by bug 823902)
Against rev d11cf8cc..., tested on ARM user mode, and ARM Vexpress
system mode (with Blue Swirl's fix from yesterday) - only
tested on Linux host. Lets me run ARM userspace firefox.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
diff --git a/cpu-all.h b/cpu-all.h
index 42a5fa0..d895ee6 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -334,7 +334,13 @@ void cpu_dump_statistics(CPUState *env, FILE *f,
fprintf_function cpu_fprintf,
void QEMU_NORETURN cpu_abort(CPUState *env, const char *fmt, ...)
GCC_FMT_ATTR(2, 3);
extern CPUState *first_cpu;
+
+#ifdef __linux__
+/* DAG: Only tested thread local on Linux, feel free to add others */
+extern __thread CPUState *cpu_single_env;
+#else
extern CPUState *cpu_single_env;
+#endif
/* Flags for use in ENV->INTERRUPT_PENDING.
diff --git a/exec.c b/exec.c
index d0cbf15..b82d8e4 100644
--- a/exec.c
+++ b/exec.c
@@ -120,7 +120,12 @@ static MemoryRegion *system_io;
CPUState *first_cpu;
/* current CPU in the current thread. It is only valid inside
cpu_exec() */
+#ifdef __linux__
+/* DAG: Only tested thread local on Linux, feel free to add others */
+__thread CPUState *cpu_single_env;
+#else
CPUState *cpu_single_env;
+#endif
/* 0 = Do not count executed instructions.
1 = Precise instruction counting.
2 = Adaptive rate instruction counting. */
- [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now),
Dr. David Alan Gilbert <=
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Jan Kiszka, 2011/10/03
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), LluĂs Vilanova, 2011/10/04
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Jan Kiszka, 2011/10/04
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Paolo Bonzini, 2011/10/05
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Jan Kiszka, 2011/10/05
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Paolo Bonzini, 2011/10/05
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), David Gilbert, 2011/10/07
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Paolo Bonzini, 2011/10/08
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Peter Maydell, 2011/10/26
- Re: [Qemu-devel] [PATCH] Make cpu_single_env thread local (Linux only for now), Paolo Bonzini, 2011/10/26