On Tue, Mar 11, 2014 at 07:32:01PM +0100, Andreas Färber 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. > > > > The IOThread object is an AioContext event loop thread. This patch adds > > the concept of multiple event loop threads, allowing users to define > > them. > > > > When SMP guests run on SMP hosts it makes sense to instantiate multiple > > IOThreads. This spreads event loop processing across multiple cores. > > Note that additional patches are required to actually bind a device to > > an IOThread. > > > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > > --- > > 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 > > > > diff --git a/Makefile.objs b/Makefile.objs > > index 4a62913..846ed66 100644 > > --- a/Makefile.objs > > +++ b/Makefile.objs > > @@ -44,6 +44,7 @@ libcacard-y += libcacard/vcardt.o > > > > ifeq ($(CONFIG_SOFTMMU),y) > > common-obj-y = blockdev.o blockdev-nbd.o block/ > > +common-obj-y += iothread.o > > common-obj-y += net/ > > common-obj-y += qdev-monitor.o device-hotplug.o > > common-obj-$(CONFIG_WIN32) += 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 <stefa...@redhat.com> > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2 or > > 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 <stefa...@redhat.com> > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2 or > > 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; > > 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