diff options
| author | Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> | 2026-06-15 12:35:09 -0700 |
|---|---|---|
| committer | Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> | 2026-06-16 10:59:05 -0700 |
| commit | e12944179af1e546dd3c0f644054257f864bbffa (patch) | |
| tree | 07f048536f7dae918884f3f76ceb3a61da79df62 /plugins | |
| parent | 89662f8903b4309623473e3b444195683c4eba44 (diff) | |
| download | qemu-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.c | 31 |
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, |
