[PATCH v2 0/6] coroutine: new sleep/wake API

Paolo Bonzini posted 6 patches 2 years, 11 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210517100548.28806-1-pbonzini@redhat.com
Maintainers: Max Reitz <mreitz@redhat.com>, Eric Blake <eblake@redhat.com>, Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>, Stefan Hajnoczi <stefanha@redhat.com>, Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>
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(-)
[PATCH v2 0/6] coroutine: new sleep/wake API
Posted by Paolo Bonzini 2 years, 11 months ago
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