From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KqCWe-0001cg-07 for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KqCWb-0001bD-Ts for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:18 -0400 Received: from [199.232.76.173] (port=36807 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KqCWa-0001b2-GZ for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:16 -0400 Received: from mx2.redhat.com ([66.187.237.31]:49547) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KqCWZ-0001OZ-Fb for qemu-devel@nongnu.org; Wed, 15 Oct 2008 15:59:16 -0400 From: Glauber Costa Date: Wed, 15 Oct 2008 19:55:16 -0200 Message-Id: <1224107718-19128-20-git-send-email-glommer@redhat.com> In-Reply-To: <1224107718-19128-1-git-send-email-glommer@redhat.com> References: <1224107718-19128-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 19/21] add next_cpu_index Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, jan.kiszka@siemens.com, jes@sgi.com, avi@qumranet.com, Glauber Costa , dmitry.baryshkov@siemens.com From: Glauber Costa separate the logic for calculating the next cpu index from cpu creation. It will allow others to query what's the next cpu index to be created before cpu creation. Signed-off-by: Glauber Costa --- exec.c | 22 ++++++++++++++-------- 1 files changed, 14 insertions(+), 8 deletions(-) diff --git a/exec.c b/exec.c index bd2a26f..7710564 100644 --- a/exec.c +++ b/exec.c @@ -526,25 +526,31 @@ static int cpu_common_load(QEMUFile *f, void *opaque, int version_id) } #endif -void cpu_exec_init(CPUState *env) +int next_cpu_index(void) { CPUState **penv; - int cpu_index; + int cpu_index = 0; - env->next_cpu = NULL; penv = &first_cpu; - cpu_index = 0; + while (*penv != NULL) { penv = (CPUState **)&(*penv)->next_cpu; cpu_index++; } - env->cpu_index = cpu_index; + return cpu_index; +} + +void cpu_exec_init(CPUState *env) +{ + env->next_cpu = NULL; + env->cpu_index = next_cpu_index(); env->nb_watchpoints = 0; - *penv = env; + if (env->cpu_index == 0) + first_cpu = env; #if defined(CPU_SAVE_VERSION) && !defined(CONFIG_USER_ONLY) - register_savevm("cpu_common", cpu_index, CPU_COMMON_SAVE_VERSION, + register_savevm("cpu_common", env->cpu_index, CPU_COMMON_SAVE_VERSION, cpu_common_save, cpu_common_load, env); - register_savevm("cpu", cpu_index, CPU_SAVE_VERSION, + register_savevm("cpu", env->cpu_index, CPU_SAVE_VERSION, cpu_save, cpu_load, env); #endif } -- 1.5.5.1