Skip to content
  • Paolo Bonzini's avatar
    5261dd7b
    coroutine-lock: make qemu_co_enter_next thread-safe · 5261dd7b
    Paolo Bonzini authored
    
    
    qemu_co_queue_next does not need to release and re-acquire the mutex,
    because the queued coroutine does not run immediately.  However, this
    does not hold for qemu_co_enter_next.  Now that qemu_co_queue_wait
    can synchronize (via QemuLockable) with code that is not running in
    coroutine context, it's important that code using qemu_co_enter_next
    can easily use a standardized locking idiom.
    
    First of all, qemu_co_enter_next must use aio_co_wake to restart the
    coroutine.  Second, the function gains a second argument, a QemuLockable*,
    and the comments of qemu_co_queue_next and qemu_co_queue_restart_all
    are adjusted to clarify the difference.
    
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20180203153935.8056-5-pbonzini@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarFam Zheng <famz@redhat.com>
    Signed-off-by: default avatarFam Zheng <famz@redhat.com>
    5261dd7b
    coroutine-lock: make qemu_co_enter_next thread-safe
    Paolo Bonzini authored
    
    
    qemu_co_queue_next does not need to release and re-acquire the mutex,
    because the queued coroutine does not run immediately.  However, this
    does not hold for qemu_co_enter_next.  Now that qemu_co_queue_wait
    can synchronize (via QemuLockable) with code that is not running in
    coroutine context, it's important that code using qemu_co_enter_next
    can easily use a standardized locking idiom.
    
    First of all, qemu_co_enter_next must use aio_co_wake to restart the
    coroutine.  Second, the function gains a second argument, a QemuLockable*,
    and the comments of qemu_co_queue_next and qemu_co_queue_restart_all
    are adjusted to clarify the difference.
    
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Message-Id: <20180203153935.8056-5-pbonzini@redhat.com>
    Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: default avatarFam Zheng <famz@redhat.com>
    Signed-off-by: default avatarFam Zheng <famz@redhat.com>
Loading