summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorPierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>2026-06-15 12:35:09 -0700
committerPierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>2026-06-16 10:59:05 -0700
commite12944179af1e546dd3c0f644054257f864bbffa (patch)
tree07f048536f7dae918884f3f76ceb3a61da79df62 /plugins
parent89662f8903b4309623473e3b444195683c4eba44 (diff)
downloadqemu-e12944179af1e546dd3c0f644054257f864bbffa.tar.gz
qemu-e12944179af1e546dd3c0f644054257f864bbffa.zip
plugins: add userdata to qemu_plugin_register_vcpu_resume_cb
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-11-pierrick.bouvier@oss.qualcomm.com Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Diffstat (limited to 'plugins')
-rw-r--r--plugins/core.c31
1 files changed, 5 insertions, 26 deletions
diff --git a/plugins/core.c b/plugins/core.c
index 4724460378..342357a749 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -84,29 +84,6 @@ void plugin_unregister_cb__locked(struct qemu_plugin_ctx *ctx,
* have type information
*/
QEMU_DISABLE_CFI
-static void plugin_vcpu_cb__simple(CPUState *cpu, enum qemu_plugin_event ev)
-{
- struct qemu_plugin_cb *cb, *next;
-
- switch (ev) {
- case QEMU_PLUGIN_EV_VCPU_RESUME:
- /* iterate safely; plugins might uninstall themselves at any time */
- QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) {
- qemu_plugin_vcpu_simple_cb_t func = cb->f.vcpu_simple;
- func(cpu->cpu_index);
- }
- break;
- default:
- g_assert_not_reached();
- }
-}
-
-/*
- * Disable CFI checks.
- * The callback function has been loaded from an external library so we do not
- * have type information
- */
-QEMU_DISABLE_CFI
static void plugin_vcpu_cb__udata(CPUState *cpu, enum qemu_plugin_event ev)
{
struct qemu_plugin_cb *cb, *next;
@@ -114,6 +91,7 @@ static void plugin_vcpu_cb__udata(CPUState *cpu, enum qemu_plugin_event ev)
switch (ev) {
case QEMU_PLUGIN_EV_VCPU_INIT:
case QEMU_PLUGIN_EV_VCPU_IDLE:
+ case QEMU_PLUGIN_EV_VCPU_RESUME:
case QEMU_PLUGIN_EV_VCPU_EXIT:
QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) {
qemu_plugin_vcpu_udata_cb_t func = cb->f.vcpu_udata;
@@ -636,7 +614,7 @@ void qemu_plugin_vcpu_resume_cb(CPUState *cpu)
{
if (cpu->cpu_index < plugin.num_vcpus) {
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC);
- plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_RESUME);
+ plugin_vcpu_cb__udata(cpu, QEMU_PLUGIN_EV_VCPU_RESUME);
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
}
}
@@ -667,9 +645,10 @@ void qemu_plugin_register_vcpu_idle_cb(qemu_plugin_id_t id,
}
void qemu_plugin_register_vcpu_resume_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_simple_cb_t cb)
+ qemu_plugin_vcpu_udata_cb_t cb,
+ void *userdata)
{
- plugin_register_cb(id, QEMU_PLUGIN_EV_VCPU_RESUME, cb);
+ plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_RESUME, cb, userdata);
}
void qemu_plugin_register_vcpu_discon_cb(qemu_plugin_id_t id,