From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KszDv-0007GS-LB for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KszDr-0007Dv-3G for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:31 -0400 Received: from [199.232.76.173] (port=51709 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KszDq-0007Dp-Lp for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:26 -0400 Received: from mx2.redhat.com ([66.187.237.31]:54697) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KszDp-0006Js-L5 for qemu-devel@nongnu.org; Thu, 23 Oct 2008 08:23:26 -0400 From: Glauber Costa Date: Thu, 23 Oct 2008 12:19:06 -0200 Message-Id: <1224771556-11146-23-git-send-email-glommer@redhat.com> In-Reply-To: <1224771556-11146-1-git-send-email-glommer@redhat.com> References: <1224771556-11146-1-git-send-email-glommer@redhat.com> Subject: [Qemu-devel] [PATCH 22/32] 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 80b8a78..7fe7eeb 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