qemu-coroutine-sleep: drop CoSleepCB

Drop CoSleepCB structure. It's actually unused.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-id: 20190122143113.20331-1-vsementsov@virtuozzo.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Vladimir Sementsov-Ogievskiy 2019-01-22 17:31:13 +03:00 committed by Stefan Hajnoczi
parent 202277f43d
commit 8595685986

View File

@ -17,38 +17,31 @@
#include "qemu/timer.h"
#include "block/aio.h"
typedef struct CoSleepCB {
QEMUTimer *ts;
Coroutine *co;
} CoSleepCB;
static void co_sleep_cb(void *opaque)
{
CoSleepCB *sleep_cb = opaque;
Coroutine *co = opaque;
/* Write of schedule protected by barrier write in aio_co_schedule */
atomic_set(&sleep_cb->co->scheduled, NULL);
aio_co_wake(sleep_cb->co);
atomic_set(&co->scheduled, NULL);
aio_co_wake(co);
}
void coroutine_fn qemu_co_sleep_ns(QEMUClockType type, int64_t ns)
{
AioContext *ctx = qemu_get_current_aio_context();
CoSleepCB sleep_cb = {
.co = qemu_coroutine_self(),
};
QEMUTimer *ts;
Coroutine *co = qemu_coroutine_self();
const char *scheduled = atomic_cmpxchg(&sleep_cb.co->scheduled, NULL,
__func__);
const char *scheduled = atomic_cmpxchg(&co->scheduled, NULL, __func__);
if (scheduled) {
fprintf(stderr,
"%s: Co-routine was already scheduled in '%s'\n",
__func__, scheduled);
abort();
}
sleep_cb.ts = aio_timer_new(ctx, type, SCALE_NS, co_sleep_cb, &sleep_cb);
timer_mod(sleep_cb.ts, qemu_clock_get_ns(type) + ns);
ts = aio_timer_new(ctx, type, SCALE_NS, co_sleep_cb, co);
timer_mod(ts, qemu_clock_get_ns(type) + ns);
qemu_coroutine_yield();
timer_del(sleep_cb.ts);
timer_free(sleep_cb.ts);
timer_del(ts);
timer_free(ts);
}