mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-26 20:03:54 -06:00
plugins/api: split out time control helpers
These are only usable in system mode where we control the timer. For user-mode make them NOPs. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20250304222439.2035603-29-alex.bennee@linaro.org>
This commit is contained in:
parent
455a2d265c
commit
1d3e745f7a
3 changed files with 51 additions and 41 deletions
|
@ -526,44 +526,3 @@ uint64_t qemu_plugin_u64_sum(qemu_plugin_u64 entry)
|
|||
return total;
|
||||
}
|
||||
|
||||
/*
|
||||
* Time control
|
||||
*/
|
||||
static bool has_control;
|
||||
#ifdef CONFIG_SOFTMMU
|
||||
static Error *migration_blocker;
|
||||
#endif
|
||||
|
||||
const void *qemu_plugin_request_time_control(void)
|
||||
{
|
||||
if (!has_control) {
|
||||
has_control = true;
|
||||
#ifdef CONFIG_SOFTMMU
|
||||
error_setg(&migration_blocker,
|
||||
"TCG plugin time control does not support migration");
|
||||
migrate_add_blocker(&migration_blocker, NULL);
|
||||
#endif
|
||||
return &has_control;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOFTMMU
|
||||
static void advance_virtual_time__async(CPUState *cpu, run_on_cpu_data data)
|
||||
{
|
||||
int64_t new_time = data.host_ulong;
|
||||
qemu_clock_advance_virtual_time(new_time);
|
||||
}
|
||||
#endif
|
||||
|
||||
void qemu_plugin_update_ns(const void *handle, int64_t new_time)
|
||||
{
|
||||
#ifdef CONFIG_SOFTMMU
|
||||
if (handle == &has_control) {
|
||||
/* Need to execute out of cpu_exec, so bql can be locked. */
|
||||
async_run_on_cpu(current_cpu,
|
||||
advance_virtual_time__async,
|
||||
RUN_ON_CPU_HOST_ULONG(new_time));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue