[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 3/5] coroutines: abort if we try to enter a stil
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 3/5] coroutines: abort if we try to enter a still-sleeping coroutine |
Date: |
Tue, 21 Nov 2017 00:13:46 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 |
On 21/11/2017 00:08, Jeff Cody wrote:
> @@ -34,6 +36,7 @@ void coroutine_fn co_aio_sleep_ns(AioContext *ctx,
> QEMUClockType type,
> CoSleepCB sleep_cb = {
> .co = qemu_coroutine_self(),
> };
> + if (sleep_cb.co->sleeping == 1 || sleep_cb.co->scheduled == 1) {
> + fprintf(stderr, "Cannot sleep a co-routine that is already sleeping "
> + " or scheduled\n");
> + abort();
> + }
> + sleep_cb.co->sleeping = 1;
> 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);
> qemu_coroutine_yield();
I understand that this was just an example and not the actual patch, but
I'll still point out that this loses the benefit (better error message)
of keeping the flags separate.
What do you think about making "scheduled" a const char * and assigning
__func__ to it (i.e. either "aio_co_schedule" or "co_aio_sleep_ns")?
Thanks,
Paolo
- Re: [Qemu-devel] [Qemu-block] [PATCH 2/5] coroutine: abort if we try to enter coroutine scheduled for another ctx, (continued)
[Qemu-devel] [PATCH 5/5] qemu-iotest: add test for blockjob coroutine race condition, Jeff Cody, 2017/11/19