summaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2009-03-07 15:24:59 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2009-03-07 15:24:59 +0000
commit339775dfc34c25902d1466f45cf2a26a720ea8ea (patch)
tree9e08316ce7fc53cc2a2602a377e821333a7d6170 /exec.c
parentb797deef2022682543581fd8e42073a829f02a8b (diff)
downloadqemu-339775dfc34c25902d1466f45cf2a26a720ea8ea.tar.gz
qemu-339775dfc34c25902d1466f45cf2a26a720ea8ea.tar.bz2
qemu-339775dfc34c25902d1466f45cf2a26a720ea8ea.zip
The _exit syscall is used for both thread termination in NPTL applications,
and process termination in legacy applications. Try to guess which we want based on the presence of multiple threads. Also implement locking when modifying the CPU list. Signed-off-by: Paul Brook <paul@codesourcery.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6735 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/exec.c b/exec.c
index 902031c48d..ab9399116c 100644
--- a/exec.c
+++ b/exec.c
@@ -534,6 +534,9 @@ void cpu_exec_init(CPUState *env)
CPUState **penv;
int cpu_index;
+#if defined(CONFIG_USER_ONLY)
+ cpu_list_lock();
+#endif
env->next_cpu = NULL;
penv = &first_cpu;
cpu_index = 0;
@@ -545,6 +548,9 @@ void cpu_exec_init(CPUState *env)
TAILQ_INIT(&env->breakpoints);
TAILQ_INIT(&env->watchpoints);
*penv = env;
+#if defined(CONFIG_USER_ONLY)
+ cpu_list_unlock();
+#endif
#if defined(CPU_SAVE_VERSION) && !defined(CONFIG_USER_ONLY)
register_savevm("cpu_common", cpu_index, CPU_COMMON_SAVE_VERSION,
cpu_common_save, cpu_common_load, env);