From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: Re: [PATCH 16/22] Introduce VCPU self-signaling service Date: Tue, 01 Feb 2011 14:59:24 +0100 Message-ID: <4D4811BC.9010802@siemens.com> References: <7e0c7b87e31857bf017d7dd96074ed11e7257529.1296133797.git.jan.kiszka@siemens.com> <20110201131404.GA13162@amt.cnet> <4D480BB9.2030209@siemens.com> <20110201135021.GB12848@amt.cnet> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Avi Kivity , "kvm@vger.kernel.org" , "qemu-devel@nongnu.org" To: Marcelo Tosatti Return-path: Received: from david.siemens.de ([192.35.17.14]:22515 "EHLO david.siemens.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756882Ab1BAN7j (ORCPT ); Tue, 1 Feb 2011 08:59:39 -0500 In-Reply-To: <20110201135021.GB12848@amt.cnet> Sender: kvm-owner@vger.kernel.org List-ID: On 2011-02-01 14:50, Marcelo Tosatti wrote: > On Tue, Feb 01, 2011 at 02:33:45PM +0100, Jan Kiszka wrote: >>>> +++ b/cpus.c >>>> @@ -531,6 +531,17 @@ void qemu_cpu_kick(void *env) >>>> return; >>>> } >>>> >>>> +void qemu_cpu_kick_self(void) >>>> +{ >>>> +#ifndef _WIN32 >>>> + assert(cpu_single_env); >>>> + >>>> + raise(SIG_IPI); >>>> +#else >>>> + abort(); >>>> +#endif >>>> +} >>>> + >>>> void qemu_notify_event(void) >>>> { >>>> CPUState *env = cpu_single_env; >>>> @@ -808,6 +819,16 @@ void qemu_cpu_kick(void *_env) >>>> } >>>> } >>>> >>>> +void qemu_cpu_kick_self(void) >>>> +{ >>>> + assert(cpu_single_env); >>>> + >>>> + if (!cpu_single_env->thread_kicked) { >>>> + qemu_thread_signal(cpu_single_env->thread, SIG_IPI); >>>> + cpu_single_env->thread_kicked = true; >>>> + } >>>> +} >>>> + >>> >>> There is no need to use cpu_single_env, can pass CPUState instead. >>> >> >> It's done intentionally this way: function shall not be used for a >> remote env. >> >> Jan > > Can assert on qemu_cpu_self(env) for that. > We already assert on cpu_single_env which is the right condition. Removing env from the parameter list avoids that someone even thinks about misusing it. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50038 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PkGlU-0001kw-IX for qemu-devel@nongnu.org; Tue, 01 Feb 2011 08:59:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PkGlS-0000D6-Oc for qemu-devel@nongnu.org; Tue, 01 Feb 2011 08:59:28 -0500 Received: from david.siemens.de ([192.35.17.14]:22402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PkGlS-0000Ce-GN for qemu-devel@nongnu.org; Tue, 01 Feb 2011 08:59:26 -0500 Message-ID: <4D4811BC.9010802@siemens.com> Date: Tue, 01 Feb 2011 14:59:24 +0100 From: Jan Kiszka MIME-Version: 1.0 References: <7e0c7b87e31857bf017d7dd96074ed11e7257529.1296133797.git.jan.kiszka@siemens.com> <20110201131404.GA13162@amt.cnet> <4D480BB9.2030209@siemens.com> <20110201135021.GB12848@amt.cnet> In-Reply-To: <20110201135021.GB12848@amt.cnet> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 16/22] Introduce VCPU self-signaling service List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Marcelo Tosatti Cc: Avi Kivity , "kvm@vger.kernel.org" , "qemu-devel@nongnu.org" On 2011-02-01 14:50, Marcelo Tosatti wrote: > On Tue, Feb 01, 2011 at 02:33:45PM +0100, Jan Kiszka wrote: >>>> +++ b/cpus.c >>>> @@ -531,6 +531,17 @@ void qemu_cpu_kick(void *env) >>>> return; >>>> } >>>> >>>> +void qemu_cpu_kick_self(void) >>>> +{ >>>> +#ifndef _WIN32 >>>> + assert(cpu_single_env); >>>> + >>>> + raise(SIG_IPI); >>>> +#else >>>> + abort(); >>>> +#endif >>>> +} >>>> + >>>> void qemu_notify_event(void) >>>> { >>>> CPUState *env = cpu_single_env; >>>> @@ -808,6 +819,16 @@ void qemu_cpu_kick(void *_env) >>>> } >>>> } >>>> >>>> +void qemu_cpu_kick_self(void) >>>> +{ >>>> + assert(cpu_single_env); >>>> + >>>> + if (!cpu_single_env->thread_kicked) { >>>> + qemu_thread_signal(cpu_single_env->thread, SIG_IPI); >>>> + cpu_single_env->thread_kicked = true; >>>> + } >>>> +} >>>> + >>> >>> There is no need to use cpu_single_env, can pass CPUState instead. >>> >> >> It's done intentionally this way: function shall not be used for a >> remote env. >> >> Jan > > Can assert on qemu_cpu_self(env) for that. > We already assert on cpu_single_env which is the right condition. Removing env from the parameter list avoids that someone even thinks about misusing it. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux