cpus: Introduce SysemuCPUOps::has_work() handler

SysemuCPUOps::has_work() is similar to CPUClass::has_work(),
but only exposed on system emulation.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250125170125.32855-4-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2025-01-21 12:57:16 +01:00
parent 8f8dbe04bd
commit 72eacd6231
3 changed files with 9 additions and 1 deletions

View File

@ -33,6 +33,10 @@
bool cpu_has_work(CPUState *cpu)
{
if (cpu->cc->sysemu_ops->has_work) {
return cpu->cc->sysemu_ops->has_work(cpu);
}
g_assert(cpu->cc->has_work);
return cpu->cc->has_work(cpu);
}

View File

@ -141,7 +141,7 @@ struct TCGCPUOps {
*
* This method must be provided. If the target does not need to
* do anything special for halt, the same function used for its
* CPUClass::has_work method can be used here, as they have the
* SysemuCPUOps::has_work method can be used here, as they have the
* same function signature.
*/
bool (*cpu_exec_halt)(CPUState *cpu);

View File

@ -16,6 +16,10 @@
* struct SysemuCPUOps: System operations specific to a CPU class
*/
typedef struct SysemuCPUOps {
/**
* @has_work: Callback for checking if there is work to do.
*/
bool (*has_work)(CPUState *cpu);
/**
* @get_memory_mapping: Callback for obtaining the memory mappings.
*/