@samitouri / QOSamiQemu / commits / 0079bbd8d5

plugins: add userdata to qemu_plugin_vcpu_for_each

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-12-pierrick.bouvier@oss.qualcomm.com Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>

Pierrick Bouvier committed Jun 15, 2026 at 12:35 UTC 0079bbd8d5d2b849f10f2ecfd8e144de17f31831
2 files changed +9 -4
include/plugins/qemu-plugin.h
+3 -1
@@ -957,6 +957,7 @@ const char *qemu_plugin_insn_symbol(const struct qemu_plugin_insn *insn);
957 * qemu_plugin_vcpu_for_each() - iterate over the existing vCPU
958 * @id: plugin ID
959 * @cb: callback function
960 + * @userdata: user data for callback
961 *
962 * The @cb function is called once for each existing vCPU.
963 *
@@ -964,7 +965,8 @@ const char *qemu_plugin_insn_symbol(const struct qemu_plugin_insn *insn);
965 */
966 QEMU_PLUGIN_API
967 void qemu_plugin_vcpu_for_each(qemu_plugin_id_t id,
967 - qemu_plugin_vcpu_simple_cb_t cb);
968 + qemu_plugin_vcpu_udata_cb_t cb,
969 + void *userdata);
970
971 /**
972 * qemu_plugin_register_flush_cb() - register code cache flush callback
plugins/core.c
+6 -3
@@ -297,18 +297,20 @@ void qemu_plugin_vcpu_exit_hook(CPUState *cpu)
297
298 struct plugin_for_each_args {
299 struct qemu_plugin_ctx *ctx;
300 - qemu_plugin_vcpu_simple_cb_t cb;
300 + qemu_plugin_vcpu_udata_cb_t cb;
301 + void *userdata;
302 };
303
304 static void plugin_vcpu_for_each(gpointer k, gpointer v, gpointer udata)
305 {
306 struct plugin_for_each_args *args = udata;
307 int cpu_index = *(int *)k;
307 - args->cb(cpu_index);
308 + args->cb(cpu_index, args->userdata);
309 }
310
311 void qemu_plugin_vcpu_for_each(qemu_plugin_id_t id,
311 - qemu_plugin_vcpu_simple_cb_t cb)
312 + qemu_plugin_vcpu_udata_cb_t cb,
313 + void *userdata)
314 {
315 struct plugin_for_each_args args;
316
@@ -318,6 +320,7 @@ void qemu_plugin_vcpu_for_each(qemu_plugin_id_t id,
320 qemu_rec_mutex_lock(&plugin.lock);
321 args.ctx = plugin_id_to_ctx_locked(id);
322 args.cb = cb;
323 + args.userdata = userdata;
324 g_hash_table_foreach(plugin.cpu_ht, plugin_vcpu_for_each, &args);
325 qemu_rec_mutex_unlock(&plugin.lock);
326 }