This is a revamp of the qemu_co_sleep* API that makes it easier to extend the API: the state that is needed to wake up a coroutine is now part of the public API instead of hidden behind a pointer-to-pointer; the API is made more extensible by pushing the rest of QemuCoSleepState into local variables.
In the future, this will be extended to introduce a prepare/sleep/cancel API similar to Linux's prepare_to_wait/schedule/finish_wait functions. For now, this is just a nice refactoring. Paolo Bonzini (6): coroutine-sleep: use a stack-allocated timer coroutine-sleep: disallow NULL QemuCoSleepState** argument coroutine-sleep: allow qemu_co_sleep_wake(NULL) coroutine-sleep: move timer out of QemuCoSleepState coroutine-sleep: replace QemuCoSleepState pointer with struct in the API coroutine-sleep: introduce qemu_co_sleep block/block-copy.c | 10 +++--- block/nbd.c | 14 +++----- include/qemu/coroutine.h | 26 ++++++++------ util/qemu-coroutine-sleep.c | 69 +++++++++++++++++-------------------- 4 files changed, 57 insertions(+), 62 deletions(-) -- 2.31.1