From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:48604) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RfsFL-0005so-2R for qemu-devel@nongnu.org; Wed, 28 Dec 2011 07:04:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RfsFJ-0006BM-UU for qemu-devel@nongnu.org; Wed, 28 Dec 2011 07:04:39 -0500 Received: from mx1.redhat.com ([209.132.183.28]:27054) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RfsFJ-0006BB-Me for qemu-devel@nongnu.org; Wed, 28 Dec 2011 07:04:37 -0500 Message-ID: <4EFB05C5.6000704@redhat.com> Date: Wed, 28 Dec 2011 14:04:21 +0200 From: Avi Kivity MIME-Version: 1.0 References: <4EFAF2B0.2090308@redhat.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] interrupt handling in qemu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: qemu-devel , Xin Tong On 12/28/2011 01:40 PM, Peter Maydell wrote: > On 28 December 2011 10:42, Avi Kivity wrote: > > It's possible to check for an interrupt before every instruction, > > without any overhead: > > > > - when a signal arrives, check the instruction pointer. If it points > > outside tcg code, set a flag and return. > > - consult a table indexed by the instruction pointer, that gives the > > number of bytes to the next guest instruction boundary > > - if nonzero, set a breakpoint at that boundary, and resume > > - remove the breakpoint (if set) > > - adjust the TB to return on the current instruction pointer > > - return > > This assumes you have hardware breakpoints on your host, so > it's not portable. You could also use software breakpoints. Or just temporarily replace the host instruction on the next guest instruction boundary with a return. > (You also need to add a check-and-handle-flag for every return > from a helper function to TCG code, ah yes - didn't consider that. you could put all helper in their own section, an do something around that - but that assumes no callouts from helpers to the standard library. > and of course you need to > actually create the instruction-boundary table. This should be well amortized. > These are both > overheads.) -- error compiling committee.c: too many arguments to function