[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 05/12] qtest: use cpu interface in qtest_clock_warp
From: |
Alex Bennée |
Subject: |
[PATCH v2 05/12] qtest: use cpu interface in qtest_clock_warp |
Date: |
Thu, 20 Jun 2024 16:22:13 +0100 |
This generalises the qtest_clock_warp code to use the AccelOps
handlers for updating its own sense of time. This will make the next
patch which moves the warp code closer to pure code motion.
From: Alex Bennée <alex.bennee@linaro.org>
Acked-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240530220610.1245424-3-pierrick.bouvier@linaro.org>
---
include/sysemu/qtest.h | 1 +
accel/qtest/qtest.c | 1 +
system/qtest.c | 6 +++---
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/include/sysemu/qtest.h b/include/sysemu/qtest.h
index b5d5fd3463..45f3b7e1df 100644
--- a/include/sysemu/qtest.h
+++ b/include/sysemu/qtest.h
@@ -36,6 +36,7 @@ void qtest_server_set_send_handler(void (*send)(void *, const
char *),
void qtest_server_inproc_recv(void *opaque, const char *buf);
int64_t qtest_get_virtual_clock(void);
+void qtest_set_virtual_clock(int64_t count);
#endif
#endif
diff --git a/accel/qtest/qtest.c b/accel/qtest/qtest.c
index f6056ac836..53182e6c2a 100644
--- a/accel/qtest/qtest.c
+++ b/accel/qtest/qtest.c
@@ -52,6 +52,7 @@ static void qtest_accel_ops_class_init(ObjectClass *oc, void
*data)
ops->create_vcpu_thread = dummy_start_vcpu_thread;
ops->get_virtual_clock = qtest_get_virtual_clock;
+ ops->set_virtual_clock = qtest_set_virtual_clock;
};
static const TypeInfo qtest_accel_ops_type = {
diff --git a/system/qtest.c b/system/qtest.c
index 507a358f3b..5be66b0140 100644
--- a/system/qtest.c
+++ b/system/qtest.c
@@ -332,14 +332,14 @@ int64_t qtest_get_virtual_clock(void)
return qatomic_read_i64(&qtest_clock_counter);
}
-static void qtest_set_virtual_clock(int64_t count)
+void qtest_set_virtual_clock(int64_t count)
{
qatomic_set_i64(&qtest_clock_counter, count);
}
static void qtest_clock_warp(int64_t dest)
{
- int64_t clock = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);
+ int64_t clock = cpus_get_virtual_clock();
AioContext *aio_context;
assert(qtest_enabled());
aio_context = qemu_get_aio_context();
@@ -348,7 +348,7 @@ static void qtest_clock_warp(int64_t dest)
QEMU_TIMER_ATTR_ALL);
int64_t warp = qemu_soonest_timeout(dest - clock, deadline);
- qtest_set_virtual_clock(qtest_get_virtual_clock() + warp);
+ cpus_set_virtual_clock(cpus_get_virtual_clock() + warp);
qemu_clock_run_timers(QEMU_CLOCK_VIRTUAL);
timerlist_run_timers(aio_context->tlg.tl[QEMU_CLOCK_VIRTUAL]);
--
2.39.2
- [PATCH v2 00/12] maintainer updates pre-PR (gdbstub, plugins, time control), Alex Bennée, 2024/06/20
- [PATCH v2 01/12] include/exec: add missing include guard comment, Alex Bennée, 2024/06/20
- [PATCH v2 02/12] gdbstub: move enums into separate header, Alex Bennée, 2024/06/20
- [PATCH v2 04/12] sysemu: add set_virtual_time to accel ops, Alex Bennée, 2024/06/20
- [PATCH v2 06/12] sysemu: generalise qtest_warp_clock as qemu_clock_advance_virtual_time, Alex Bennée, 2024/06/20
- [PATCH v2 03/12] plugins: Ensure register handles are not NULL, Alex Bennée, 2024/06/20
- [PATCH v2 07/12] qtest: move qtest_{get, set}_virtual_clock to accel/qtest/qtest.c, Alex Bennée, 2024/06/20
- [PATCH v2 05/12] qtest: use cpu interface in qtest_clock_warp,
Alex Bennée <=
- [PATCH v2 08/12] plugins: add time control API, Alex Bennée, 2024/06/20
- [PATCH v2 09/12] plugins: add migration blocker, Alex Bennée, 2024/06/20
- [PATCH v2 10/12] contrib/plugins: add Instructions Per Second (IPS) example for cost modeling, Alex Bennée, 2024/06/20
- [PATCH v2 12/12] accel/tcg: Avoid unnecessary call overhead from qemu_plugin_vcpu_mem_cb, Alex Bennée, 2024/06/20