From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43542) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNRaF-0006jq-Ai for qemu-devel@nongnu.org; Tue, 11 Mar 2014 14:39:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WNRa8-00089E-RD for qemu-devel@nongnu.org; Tue, 11 Mar 2014 14:39:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:31728) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WNRa8-000896-Iu for qemu-devel@nongnu.org; Tue, 11 Mar 2014 14:39:16 -0400 Date: Tue, 11 Mar 2014 19:39:07 +0100 From: Stefan Hajnoczi Message-ID: <20140311183907.GA29291@stefanha-thinkpad.redhat.com> References: <1393842608-17795-1-git-send-email-stefanha@redhat.com> <1393842608-17795-5-git-send-email-stefanha@redhat.com> <531F56A1.9000109@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <531F56A1.9000109@suse.de> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v6 4/7] iothread: add I/O thread object List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Andreas =?iso-8859-1?Q?F=E4rber?= Cc: Kevin Wolf , Fam Zheng , "Shergill, Gurinder" , qemu-devel@nongnu.org, Michael Roth , Paolo Bonzini , "Vinod, Chegu" On Tue, Mar 11, 2014 at 07:32:01PM +0100, Andreas F=E4rber wrote: > Am 03.03.2014 11:30, schrieb Stefan Hajnoczi: > > This is a stand-in for Michael Roth's QContext. I expect this to be > > replaced once QContext is completed. > >=20 > > The IOThread object is an AioContext event loop thread. This patch a= dds > > the concept of multiple event loop threads, allowing users to define > > them. > >=20 > > When SMP guests run on SMP hosts it makes sense to instantiate multip= le > > IOThreads. This spreads event loop processing across multiple cores. > > Note that additional patches are required to actually bind a device t= o > > an IOThread. > >=20 > > Signed-off-by: Stefan Hajnoczi > > --- > > Makefile.objs | 1 + > > include/sysemu/iothread.h | 30 ++++++++++++ > > iothread.c | 119 ++++++++++++++++++++++++++++++++++++= ++++++++++ > > 3 files changed, 150 insertions(+) > > create mode 100644 include/sysemu/iothread.h > > create mode 100644 iothread.c > >=20 > > diff --git a/Makefile.objs b/Makefile.objs > > index 4a62913..846ed66 100644 > > --- a/Makefile.objs > > +++ b/Makefile.objs > > @@ -44,6 +44,7 @@ libcacard-y +=3D libcacard/vcardt.o > > =20 > > ifeq ($(CONFIG_SOFTMMU),y) > > common-obj-y =3D blockdev.o blockdev-nbd.o block/ > > +common-obj-y +=3D iothread.o > > common-obj-y +=3D net/ > > common-obj-y +=3D qdev-monitor.o device-hotplug.o > > common-obj-$(CONFIG_WIN32) +=3D os-win32.o > > diff --git a/include/sysemu/iothread.h b/include/sysemu/iothread.h > > new file mode 100644 > > index 0000000..a32214a > > --- /dev/null > > +++ b/include/sysemu/iothread.h > > @@ -0,0 +1,30 @@ > > +/* > > + * Event loop thread > > + * > > + * Copyright Red Hat Inc., 2013 > > + * > > + * Authors: > > + * Stefan Hajnoczi > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2 o= r later. > > + * See the COPYING file in the top-level directory. > > + * > > + */ > > + > > +#ifndef IOTHREAD_H > > +#define IOTHREAD_H > > + > > +#include "block/aio.h" > > + > > +#define TYPE_IOTHREAD "iothread" > > + > > +typedef struct IOThread IOThread; > > + > > +#define IOTHREAD(obj) \ > > + OBJECT_CHECK(IOThread, obj, TYPE_IOTHREAD) > > + > > +IOThread *iothread_find(const char *id); > > +char *iothread_get_id(IOThread *iothread); > > +AioContext *iothread_get_aio_context(IOThread *iothread); > > + > > +#endif /* IOTHREAD_H */ > > diff --git a/iothread.c b/iothread.c > > new file mode 100644 > > index 0000000..231ce6c > > --- /dev/null > > +++ b/iothread.c > > @@ -0,0 +1,119 @@ > > +/* > > + * Event loop thread > > + * > > + * Copyright Red Hat Inc., 2013 > > + * > > + * Authors: > > + * Stefan Hajnoczi > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2 o= r later. > > + * See the COPYING file in the top-level directory. > > + * > > + */ > > + > > +#include "qom/object.h" > > +#include "qom/object_interfaces.h" > > +#include "qemu/module.h" > > +#include "qemu/thread.h" > > +#include "block/aio.h" > > +#include "sysemu/iothread.h" > > + > > +#define IOTHREADS_PATH "/objects" > > + > > +typedef ObjectClass IOThreadClass; > > +struct IOThread { > > + Object parent; >=20 > Can you rename to parent_obj in your tree please and leave a while line > after? Sure. Note that there are still other instances of this in the tree. Stefan