From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LwfZs-0003vw-Jb for qemu-devel@nongnu.org; Wed, 22 Apr 2009 12:45:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LwfZn-0003sM-K5 for qemu-devel@nongnu.org; Wed, 22 Apr 2009 12:45:40 -0400 Received: from [199.232.76.173] (port=44028 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LwfZn-0003s9-ES for qemu-devel@nongnu.org; Wed, 22 Apr 2009 12:45:35 -0400 Received: from rv-out-0708.google.com ([209.85.198.243]:43996) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LwfZm-0005ac-Vx for qemu-devel@nongnu.org; Wed, 22 Apr 2009 12:45:35 -0400 Received: by rv-out-0708.google.com with SMTP id c5so44819rvf.22 for ; Wed, 22 Apr 2009 09:45:34 -0700 (PDT) Message-ID: <49EF49A9.2000008@codemonkey.ws> Date: Wed, 22 Apr 2009 11:45:29 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [RfC / Patch] xenner: event channel implementation. References: <49EF1EE6.5080900@redhat.com> In-Reply-To: <49EF1EE6.5080900@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Gerd Hoffmann Cc: Xen Development Mailing List , "qemu-devel@nongnu.org" Gerd Hoffmann wrote: > Hi, > > Merging the xen bits seems to be on a good way. Time to look at > un-bitrotting the xenner bits ... > > Here is a first patch for comments. Not useful on its own. Right now > I'm looking more for comments on the way the integration is done. > > Event channels on Xen are managed by calling the xc_evtchn_* functions > provided by libxenctrl. The library in turn does does hypercalls into > the xen kernel. xenner obviously has to provide an alternative > implementation for these functions. Also for others. This patch > starts with just the event channels though. With xenner, do you still use xenstore/xenconsoled? If so, don't you need some LD_PRELOAD magic to make that work? Regards, Anthony Liguori > It works this way: There is a struct with function pointers to the > event channel functions. The struct can be switched at runtime to the > xen or xenner version of the functions depending on the qemu operation > mode. > > The struct is named "xc_evtchn", the function pointer are named like > the xc_evtchn_* functions, but without the xc_evtchn_ prefix, i.e. > "xc_evtchn_open(...)" becomes xc_evtchn.open(...). > > The function calls in the source code (xen backend drivers) are not > changed directly, but using a include file with a bunch of #defines. > That way I don't have to change s/xc_evtchn_/xc_evtchn./ all over the > place. Also xenner can easily be disabled at compile time and the > indirect function pointer calls simply go away then. > > Comments? > > cheers, > Gerd