Signed-off-by: Pierrick Bouvier <[email protected]>
---
contrib/plugins/ips.c | 4 ++--
include/plugins/qemu-plugin.h | 4 +++-
plugins/api.c | 5 +++--
plugins/core.c | 4 ++--
4 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/contrib/plugins/ips.c b/contrib/plugins/ips.c
index 1290a624489..2c110906731 100644
--- a/contrib/plugins/ips.c
+++ b/contrib/plugins/ips.c
@@ -97,7 +97,7 @@ static void vcpu_init(unsigned int cpu_index, void *userdata)
vcpu->last_quantum_time = now_ns();
}
-static void vcpu_exit(unsigned int cpu_index)
+static void vcpu_exit(unsigned int cpu_index, void *userdata)
{
vCPUTime *vcpu = qemu_plugin_scoreboard_find(vcpus, cpu_index);
update_system_time(vcpu);
@@ -208,7 +208,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t
id,
qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
- qemu_plugin_register_vcpu_exit_cb(id, vcpu_exit);
+ qemu_plugin_register_vcpu_exit_cb(id, vcpu_exit, NULL);
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
return 0;
diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h
index bb4569a2291..d4f8a99027e 100644
--- a/include/plugins/qemu-plugin.h
+++ b/include/plugins/qemu-plugin.h
@@ -257,6 +257,7 @@ void qemu_plugin_register_vcpu_init_cb(qemu_plugin_id_t id,
* qemu_plugin_register_vcpu_exit_cb() - register a vCPU exit callback
* @id: plugin ID
* @cb: callback function
+ * @userdata: any plugin data to pass to the @cb
*
* The @cb function is called every time a vCPU exits.
*
@@ -264,7 +265,8 @@ void qemu_plugin_register_vcpu_init_cb(qemu_plugin_id_t id,
*/
QEMU_PLUGIN_API
void qemu_plugin_register_vcpu_exit_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_simple_cb_t cb);
+ qemu_plugin_vcpu_udata_cb_t cb,
+ void *userdata);
/**
* qemu_plugin_register_vcpu_idle_cb() - register a vCPU idle callback
diff --git a/plugins/api.c b/plugins/api.c
index 68b564bb9c2..849790fe13b 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -78,9 +78,10 @@ void qemu_plugin_register_vcpu_init_cb(qemu_plugin_id_t id,
}
void qemu_plugin_register_vcpu_exit_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_EXIT, cb);
+ plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_EXIT, cb, userdata);
}
static bool tb_is_mem_only(void)
diff --git a/plugins/core.c b/plugins/core.c
index 1d5692b3f41..15fb548f68c 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -89,7 +89,6 @@ 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_EXIT:
case QEMU_PLUGIN_EV_VCPU_IDLE:
case QEMU_PLUGIN_EV_VCPU_RESUME:
/* iterate safely; plugins might uninstall themselves at any time */
@@ -115,6 +114,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_EXIT:
QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) {
qemu_plugin_vcpu_udata_cb_t func = cb->f.vcpu_udata;
func(cpu->cpu_index, cb->udata);
@@ -306,7 +306,7 @@ void qemu_plugin_vcpu_exit_hook(CPUState *cpu)
bool success;
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS);
- plugin_vcpu_cb__simple(cpu, QEMU_PLUGIN_EV_VCPU_EXIT);
+ plugin_vcpu_cb__udata(cpu, QEMU_PLUGIN_EV_VCPU_EXIT);
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
assert(cpu->cpu_index != UNASSIGNED_CPU_INDEX);
--
2.43.0