On 18/09/2015 15:19, Daniel P. Berrange wrote: > The coroutine files are currently referenced by the block-obj-y > variable. The coroutine functionality though is already used by > more than just the block code. eg migration code uses coroutine > yield. In the future the I/O channel code will also use the > coroutine yield functionality. Since the coroutine code is nicely > self-contained it can be easily built as part of the libqemuutil.a > library, making it widely available. > > The headers are also moved into include/qemu, instead of the > include/block directory, since they are now part of the util > codebase, and the impl was never in the block/ directory > either. > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com>
Since you are at it, can you add an entry to the MAINTAINERS file, assigning it to Stefan and Kevin? Paolo > --- > Makefile.objs | 4 ---- > block.c | 2 +- > block/qcow2.h | 2 +- > block/vdi.c | 2 +- > block/write-threshold.c | 2 +- > blockjob.c | 2 +- > hw/9pfs/codir.c | 2 +- > hw/9pfs/cofile.c | 2 +- > hw/9pfs/cofs.c | 2 +- > hw/9pfs/coxattr.c | 2 +- > hw/9pfs/virtio-9p-coth.c | 2 +- > hw/9pfs/virtio-9p-coth.h | 2 +- > hw/9pfs/virtio-9p.h | 2 +- > include/block/block.h | 2 +- > include/block/block_int.h | 2 +- > include/{block => qemu}/coroutine.h | 0 > include/{block => qemu}/coroutine_int.h | 2 +- > migration/qemu-file-buf.c | 2 +- > migration/qemu-file-stdio.c | 2 +- > migration/qemu-file-unix.c | 2 +- > migration/qemu-file.c | 2 +- > migration/rdma.c | 2 +- > nbd.c | 2 +- > tests/test-coroutine.c | 4 ++-- > tests/test-vmstate.c | 2 +- > thread-pool.c | 2 +- > util/Makefile.objs | 3 +++ > coroutine-gthread.c => util/coroutine-gthread.c | 2 +- > coroutine-sigaltstack.c => util/coroutine-sigaltstack.c | 2 +- > coroutine-ucontext.c => util/coroutine-ucontext.c | 2 +- > coroutine-win32.c => util/coroutine-win32.c | 2 +- > qemu-coroutine-io.c => util/qemu-coroutine-io.c | 2 +- > qemu-coroutine-lock.c => util/qemu-coroutine-lock.c | 4 ++-- > qemu-coroutine-sleep.c => util/qemu-coroutine-sleep.c | 2 +- > qemu-coroutine.c => util/qemu-coroutine.c | 4 ++-- > 35 files changed, 38 insertions(+), 39 deletions(-) > rename include/{block => qemu}/coroutine.h (100%) > rename include/{block => qemu}/coroutine_int.h (98%) > rename coroutine-gthread.c => util/coroutine-gthread.c (99%) > rename coroutine-sigaltstack.c => util/coroutine-sigaltstack.c (99%) > rename coroutine-ucontext.c => util/coroutine-ucontext.c (99%) > rename coroutine-win32.c => util/coroutine-win32.c (98%) > rename qemu-coroutine-io.c => util/qemu-coroutine-io.c (99%) > rename qemu-coroutine-lock.c => util/qemu-coroutine-lock.c (98%) > rename qemu-coroutine-sleep.c => util/qemu-coroutine-sleep.c (96%) > rename qemu-coroutine.c => util/qemu-coroutine.c (98%) > > diff --git a/Makefile.objs b/Makefile.objs > index 3df2efc..2e94eaf 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -14,10 +14,6 @@ block-obj-$(CONFIG_WIN32) += aio-win32.o > block-obj-y += block/ > block-obj-y += qemu-io-cmds.o > > -block-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o > -block-obj-y += qemu-coroutine-sleep.o > -block-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o > - > block-obj-m = block/ > > ####################################################################### > diff --git a/block.c b/block.c > index 6268e37..cfc9a13 100644 > --- a/block.c > +++ b/block.c > @@ -33,7 +33,7 @@ > #include "sysemu/block-backend.h" > #include "sysemu/sysemu.h" > #include "qemu/notify.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "block/qapi.h" > #include "qmp-commands.h" > #include "qemu/timer.h" > diff --git a/block/qcow2.h b/block/qcow2.h > index d700bf1..27b919c 100644 > --- a/block/qcow2.h > +++ b/block/qcow2.h > @@ -26,7 +26,7 @@ > #define BLOCK_QCOW2_H > > #include "crypto/cipher.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > //#define DEBUG_ALLOC > //#define DEBUG_ALLOC2 > diff --git a/block/vdi.c b/block/vdi.c > index 062a654..d662f41 100644 > --- a/block/vdi.c > +++ b/block/vdi.c > @@ -53,7 +53,7 @@ > #include "block/block_int.h" > #include "qemu/module.h" > #include "migration/migration.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > #if defined(CONFIG_UUID) > #include <uuid/uuid.h> > diff --git a/block/write-threshold.c b/block/write-threshold.c > index a53c1f5..0fe3891 100644 > --- a/block/write-threshold.c > +++ b/block/write-threshold.c > @@ -11,7 +11,7 @@ > */ > > #include "block/block_int.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "block/write-threshold.h" > #include "qemu/notify.h" > #include "qapi-event.h" > diff --git a/blockjob.c b/blockjob.c > index 62bb906..dc42d15 100644 > --- a/blockjob.c > +++ b/blockjob.c > @@ -31,7 +31,7 @@ > #include "block/block_int.h" > #include "qapi/qmp/qerror.h" > #include "qapi/qmp/qjson.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "qmp-commands.h" > #include "qemu/timer.h" > #include "qapi-event.h" > diff --git a/hw/9pfs/codir.c b/hw/9pfs/codir.c > index 65ad329..ec9cc7f 100644 > --- a/hw/9pfs/codir.c > +++ b/hw/9pfs/codir.c > @@ -14,7 +14,7 @@ > > #include "fsdev/qemu-fsdev.h" > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p-coth.h" > > int v9fs_co_readdir_r(V9fsPDU *pdu, V9fsFidState *fidp, struct dirent *dent, > diff --git a/hw/9pfs/cofile.c b/hw/9pfs/cofile.c > index 2efebf3..7cb55ee 100644 > --- a/hw/9pfs/cofile.c > +++ b/hw/9pfs/cofile.c > @@ -14,7 +14,7 @@ > > #include "fsdev/qemu-fsdev.h" > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p-coth.h" > > int v9fs_co_st_gen(V9fsPDU *pdu, V9fsPath *path, mode_t st_mode, > diff --git a/hw/9pfs/cofs.c b/hw/9pfs/cofs.c > index 42ee614..e1953a9 100644 > --- a/hw/9pfs/cofs.c > +++ b/hw/9pfs/cofs.c > @@ -14,7 +14,7 @@ > > #include "fsdev/qemu-fsdev.h" > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p-coth.h" > > static ssize_t __readlink(V9fsState *s, V9fsPath *path, V9fsString *buf) > diff --git a/hw/9pfs/coxattr.c b/hw/9pfs/coxattr.c > index 18ee08d..55c0d23 100644 > --- a/hw/9pfs/coxattr.c > +++ b/hw/9pfs/coxattr.c > @@ -14,7 +14,7 @@ > > #include "fsdev/qemu-fsdev.h" > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p-coth.h" > > int v9fs_co_llistxattr(V9fsPDU *pdu, V9fsPath *path, void *value, size_t > size) > diff --git a/hw/9pfs/virtio-9p-coth.c b/hw/9pfs/virtio-9p-coth.c > index 8185c53..5057f8d 100644 > --- a/hw/9pfs/virtio-9p-coth.c > +++ b/hw/9pfs/virtio-9p-coth.c > @@ -15,7 +15,7 @@ > #include "fsdev/qemu-fsdev.h" > #include "qemu/thread.h" > #include "qemu/event_notifier.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p-coth.h" > > /* v9fs glib thread pool */ > diff --git a/hw/9pfs/virtio-9p-coth.h b/hw/9pfs/virtio-9p-coth.h > index 4f51b25..0fbe49a 100644 > --- a/hw/9pfs/virtio-9p-coth.h > +++ b/hw/9pfs/virtio-9p-coth.h > @@ -16,7 +16,7 @@ > #define _QEMU_VIRTIO_9P_COTH_H > > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "virtio-9p.h" > #include <glib.h> > > diff --git a/hw/9pfs/virtio-9p.h b/hw/9pfs/virtio-9p.h > index 2e7d488..d7a4dc1 100644 > --- a/hw/9pfs/virtio-9p.h > +++ b/hw/9pfs/virtio-9p.h > @@ -13,7 +13,7 @@ > #include "fsdev/file-op-9p.h" > #include "fsdev/virtio-9p-marshal.h" > #include "qemu/thread.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > enum { > P9_TLERROR = 6, > diff --git a/include/block/block.h b/include/block/block.h > index ef67353..4d77291 100644 > --- a/include/block/block.h > +++ b/include/block/block.h > @@ -4,7 +4,7 @@ > #include "block/aio.h" > #include "qemu-common.h" > #include "qemu/option.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "block/accounting.h" > #include "qapi/qmp/qobject.h" > #include "qapi-types.h" > diff --git a/include/block/block_int.h b/include/block/block_int.h > index 14ad4c3..c37ed77 100644 > --- a/include/block/block_int.h > +++ b/include/block/block_int.h > @@ -28,7 +28,7 @@ > #include "block/block.h" > #include "qemu/option.h" > #include "qemu/queue.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "qemu/timer.h" > #include "qapi-types.h" > #include "qemu/hbitmap.h" > diff --git a/include/block/coroutine.h b/include/qemu/coroutine.h > similarity index 100% > rename from include/block/coroutine.h > rename to include/qemu/coroutine.h > diff --git a/include/block/coroutine_int.h b/include/qemu/coroutine_int.h > similarity index 98% > rename from include/block/coroutine_int.h > rename to include/qemu/coroutine_int.h > index 9aa1aae..42d6838 100644 > --- a/include/block/coroutine_int.h > +++ b/include/qemu/coroutine_int.h > @@ -26,7 +26,7 @@ > #define QEMU_COROUTINE_INT_H > > #include "qemu/queue.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > typedef enum { > COROUTINE_YIELD = 1, > diff --git a/migration/qemu-file-buf.c b/migration/qemu-file-buf.c > index 2de9330..556f5dc 100644 > --- a/migration/qemu-file-buf.c > +++ b/migration/qemu-file-buf.c > @@ -29,7 +29,7 @@ > #include "qemu/error-report.h" > #include "qemu/iov.h" > #include "qemu/sockets.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "migration/migration.h" > #include "migration/qemu-file.h" > #include "migration/qemu-file-internal.h" > diff --git a/migration/qemu-file-stdio.c b/migration/qemu-file-stdio.c > index 285068b..002dc5d 100644 > --- a/migration/qemu-file-stdio.c > +++ b/migration/qemu-file-stdio.c > @@ -22,7 +22,7 @@ > * THE SOFTWARE. > */ > #include "qemu-common.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "migration/qemu-file.h" > > typedef struct QEMUFileStdio { > diff --git a/migration/qemu-file-unix.c b/migration/qemu-file-unix.c > index bfbc086..e4f195a 100644 > --- a/migration/qemu-file-unix.c > +++ b/migration/qemu-file-unix.c > @@ -24,7 +24,7 @@ > #include "qemu-common.h" > #include "qemu/iov.h" > #include "qemu/sockets.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "migration/qemu-file.h" > #include "migration/qemu-file-internal.h" > > diff --git a/migration/qemu-file.c b/migration/qemu-file.c > index 6bb3dc1..d2359c4 100644 > --- a/migration/qemu-file.c > +++ b/migration/qemu-file.c > @@ -26,7 +26,7 @@ > #include "qemu/error-report.h" > #include "qemu/iov.h" > #include "qemu/sockets.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "migration/migration.h" > #include "migration/qemu-file.h" > #include "migration/qemu-file-internal.h" > diff --git a/migration/rdma.c b/migration/rdma.c > index 9424834..854fde4 100644 > --- a/migration/rdma.c > +++ b/migration/rdma.c > @@ -19,7 +19,7 @@ > #include "qemu/main-loop.h" > #include "qemu/sockets.h" > #include "qemu/bitmap.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include <stdio.h> > #include <sys/types.h> > #include <sys/socket.h> > diff --git a/nbd.c b/nbd.c > index 07240bd..1724a1f 100644 > --- a/nbd.c > +++ b/nbd.c > @@ -19,7 +19,7 @@ > #include "block/nbd.h" > #include "sysemu/block-backend.h" > > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > #include <errno.h> > #include <string.h> > diff --git a/tests/test-coroutine.c b/tests/test-coroutine.c > index b552d9f..f5951cb 100644 > --- a/tests/test-coroutine.c > +++ b/tests/test-coroutine.c > @@ -12,8 +12,8 @@ > */ > > #include <glib.h> > -#include "block/coroutine.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine.h" > +#include "qemu/coroutine_int.h" > > /* > * Check that qemu_in_coroutine() works > diff --git a/tests/test-vmstate.c b/tests/test-vmstate.c > index 1d620e0..4d13bd0 100644 > --- a/tests/test-vmstate.c > +++ b/tests/test-vmstate.c > @@ -27,7 +27,7 @@ > #include "qemu-common.h" > #include "migration/migration.h" > #include "migration/vmstate.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > > static char temp_file[] = "/tmp/vmst.test.XXXXXX"; > static int temp_fd; > diff --git a/thread-pool.c b/thread-pool.c > index ac909f4..402c778 100644 > --- a/thread-pool.c > +++ b/thread-pool.c > @@ -18,7 +18,7 @@ > #include "qemu/queue.h" > #include "qemu/thread.h" > #include "qemu/osdep.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "trace.h" > #include "block/thread-pool.h" > #include "qemu/main-loop.h" > diff --git a/util/Makefile.objs b/util/Makefile.objs > index 114d657..d8d7e7a 100644 > --- a/util/Makefile.objs > +++ b/util/Makefile.objs > @@ -18,3 +18,6 @@ util-obj-y += getauxval.o > util-obj-y += readline.o > util-obj-y += rfifolock.o > util-obj-y += rcu.o > +util-obj-y += qemu-coroutine.o qemu-coroutine-lock.o qemu-coroutine-io.o > +util-obj-y += qemu-coroutine-sleep.o > +util-obj-y += coroutine-$(CONFIG_COROUTINE_BACKEND).o > diff --git a/coroutine-gthread.c b/util/coroutine-gthread.c > similarity index 99% > rename from coroutine-gthread.c > rename to util/coroutine-gthread.c > index 6bd6d6b..0bcd778 100644 > --- a/coroutine-gthread.c > +++ b/util/coroutine-gthread.c > @@ -20,7 +20,7 @@ > > #include <glib.h> > #include "qemu-common.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine_int.h" > > typedef struct { > Coroutine base; > diff --git a/coroutine-sigaltstack.c b/util/coroutine-sigaltstack.c > similarity index 99% > rename from coroutine-sigaltstack.c > rename to util/coroutine-sigaltstack.c > index 63519ff..39842a4 100644 > --- a/coroutine-sigaltstack.c > +++ b/util/coroutine-sigaltstack.c > @@ -31,7 +31,7 @@ > #include <pthread.h> > #include <signal.h> > #include "qemu-common.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine_int.h" > > typedef struct { > Coroutine base; > diff --git a/coroutine-ucontext.c b/util/coroutine-ucontext.c > similarity index 99% > rename from coroutine-ucontext.c > rename to util/coroutine-ucontext.c > index 259fcb4..26cbebb 100644 > --- a/coroutine-ucontext.c > +++ b/util/coroutine-ucontext.c > @@ -27,7 +27,7 @@ > #include <stdint.h> > #include <ucontext.h> > #include "qemu-common.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine_int.h" > > #ifdef CONFIG_VALGRIND_H > #include <valgrind/valgrind.h> > diff --git a/coroutine-win32.c b/util/coroutine-win32.c > similarity index 98% > rename from coroutine-win32.c > rename to util/coroutine-win32.c > index 17ace37..4f922c5 100644 > --- a/coroutine-win32.c > +++ b/util/coroutine-win32.c > @@ -23,7 +23,7 @@ > */ > > #include "qemu-common.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine_int.h" > > typedef struct > { > diff --git a/qemu-coroutine-io.c b/util/qemu-coroutine-io.c > similarity index 99% > rename from qemu-coroutine-io.c > rename to util/qemu-coroutine-io.c > index 28dc735..e1eae73 100644 > --- a/qemu-coroutine-io.c > +++ b/util/qemu-coroutine-io.c > @@ -24,7 +24,7 @@ > */ > #include "qemu-common.h" > #include "qemu/sockets.h" > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "qemu/iov.h" > #include "qemu/main-loop.h" > > diff --git a/qemu-coroutine-lock.c b/util/qemu-coroutine-lock.c > similarity index 98% > rename from qemu-coroutine-lock.c > rename to util/qemu-coroutine-lock.c > index 6b49033..130ee19 100644 > --- a/qemu-coroutine-lock.c > +++ b/util/qemu-coroutine-lock.c > @@ -23,8 +23,8 @@ > */ > > #include "qemu-common.h" > -#include "block/coroutine.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine.h" > +#include "qemu/coroutine_int.h" > #include "qemu/queue.h" > #include "trace.h" > > diff --git a/qemu-coroutine-sleep.c b/util/qemu-coroutine-sleep.c > similarity index 96% > rename from qemu-coroutine-sleep.c > rename to util/qemu-coroutine-sleep.c > index 9abb7fd..b35db56 100644 > --- a/qemu-coroutine-sleep.c > +++ b/util/qemu-coroutine-sleep.c > @@ -11,7 +11,7 @@ > * > */ > > -#include "block/coroutine.h" > +#include "qemu/coroutine.h" > #include "qemu/timer.h" > #include "block/aio.h" > > diff --git a/qemu-coroutine.c b/util/qemu-coroutine.c > similarity index 98% > rename from qemu-coroutine.c > rename to util/qemu-coroutine.c > index c17a92b..8953560 100644 > --- a/qemu-coroutine.c > +++ b/util/qemu-coroutine.c > @@ -16,8 +16,8 @@ > #include "qemu-common.h" > #include "qemu/thread.h" > #include "qemu/atomic.h" > -#include "block/coroutine.h" > -#include "block/coroutine_int.h" > +#include "qemu/coroutine.h" > +#include "qemu/coroutine_int.h" > > enum { > POOL_BATCH_SIZE = 64, >