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 v1->v2: comment and commit message updates in patches 3, 5 and 6 Paolo Bonzini (6): coroutine-sleep: use a stack-allocated timer coroutine-sleep: disallow NULL QemuCoSleepState** argument coroutine-sleep: allow qemu_co_sleep_wake that wakes nothing 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 | 27 ++++++++----- util/qemu-coroutine-sleep.c | 75 +++++++++++++++++++------------------ 4 files changed, 64 insertions(+), 62 deletions(-) -- 2.31.1