[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 07/17] async/coroutine: Convert to new bh API
From: |
Nicholas Piggin |
Subject: |
[PATCH 07/17] async/coroutine: Convert to new bh API |
Date: |
Fri, 20 Dec 2024 20:42:09 +1000 |
Convert qemu_bh_schedule() to qemu_bh_schedule_event() and
aio_bh_schedule_oneshot() to aio_bh_schedule_oneshot_event(), which can
specify the clock type, making it compatible with record-replay.
Coroutine scheduling does not affect target machine state, so it should
use QEMU_CLOCK_REALTIME so it is not recorded and replayed.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
job.c | 3 ++-
util/async.c | 2 +-
scripts/block-coroutine-wrapper.py | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/job.c b/job.c
index 660ce22c56b..45e9d9fc096 100644
--- a/job.c
+++ b/job.c
@@ -1109,7 +1109,8 @@ static void coroutine_fn job_co_entry(void *opaque)
job->deferred_to_main_loop = true;
job->busy = true;
}
- aio_bh_schedule_oneshot(qemu_get_aio_context(), job_exit, job);
+ aio_bh_schedule_oneshot_event(qemu_get_aio_context(), job_exit, job,
+ QEMU_CLOCK_REALTIME);
}
void job_start(Job *job)
diff --git a/util/async.c b/util/async.c
index b88083ecbe7..6ac994effec 100644
--- a/util/async.c
+++ b/util/async.c
@@ -683,7 +683,7 @@ void aio_co_schedule(AioContext *ctx, Coroutine *co)
QSLIST_INSERT_HEAD_ATOMIC(&ctx->scheduled_coroutines,
co, co_scheduled_next);
- qemu_bh_schedule(ctx->co_schedule_bh);
+ qemu_bh_schedule_event(ctx->co_schedule_bh, QEMU_CLOCK_REALTIME);
aio_context_unref(ctx);
}
diff --git a/scripts/block-coroutine-wrapper.py
b/scripts/block-coroutine-wrapper.py
index dbbde99e39e..c111c322487 100644
--- a/scripts/block-coroutine-wrapper.py
+++ b/scripts/block-coroutine-wrapper.py
@@ -292,7 +292,8 @@ def gen_no_co_wrapper(func: FuncDecl) -> str:
}};
assert(qemu_in_coroutine());
- aio_bh_schedule_oneshot(qemu_get_aio_context(), {name}_bh, &s);
+ aio_bh_schedule_oneshot_event(qemu_get_aio_context(), {name}_bh, &s,
+ QEMU_CLOCK_REALTIME);
qemu_coroutine_yield();
{func.ret}
--
2.45.2
- Re: [PATCH 01/17] replay: Fix migration use of clock for statistics, (continued)
- [PATCH 02/17] replay: Fix migration replay_mutex locking, Nicholas Piggin, 2024/12/20
- [PATCH 03/17] async: rework async event API for replay, Nicholas Piggin, 2024/12/20
- [PATCH 04/17] util/main-loop: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 05/17] util/thread-pool: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 06/17] util/aio-wait: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 07/17] async/coroutine: Convert to new bh API,
Nicholas Piggin <=
- [PATCH 08/17] migration: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 09/17] monitor: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 10/17] qmp: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 11/17] block: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 12/17] hw/ide: Fix record-replay and convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 13/17] hw/scsi: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 14/17] async: add debugging assertions for record/replay in bh APIs, Nicholas Piggin, 2024/12/20
- [PATCH 15/17] tests/avocado/replay_linux: Fix compile error, Nicholas Piggin, 2024/12/20