All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org,
	Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Cc: "Chao Liu" <chao.liu.zevorn@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Brian Cain" <brian.cain@oss.qualcomm.com>,
	"Philippe Mathieu-Daudé " <philmd@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
	"Alexandre Iooss" <erdnaxe@crans.org>
Subject: Re: [PATCH 16/25] plugins: add userdata to qemu_plugin_vcpu_tb_trans_cb_t
Date: Thu, 11 Jun 2026 08:57:33 +0300	[thread overview]
Message-ID: <tggdxc.1dpccfc9pplai@linaro.org> (raw)
In-Reply-To: <20260603205152.1440291-17-pierrick.bouvier@oss.qualcomm.com>

On Wed, 03 Jun 2026 23:51, Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com> wrote:
>Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
>---

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

> contrib/plugins/bbv.c         | 4 ++--
> contrib/plugins/cache.c       | 4 ++--
> contrib/plugins/cflow.c       | 4 ++--
> contrib/plugins/cpp.cpp       | 4 ++--
> contrib/plugins/drcov.c       | 4 ++--
> contrib/plugins/execlog.c     | 4 ++--
> contrib/plugins/hotblocks.c   | 4 ++--
> contrib/plugins/hotpages.c    | 4 ++--
> contrib/plugins/howvec.c      | 4 ++--
> contrib/plugins/hwprofile.c   | 4 ++--
> contrib/plugins/ips.c         | 4 ++--
> contrib/plugins/lockstep.c    | 4 ++--
> contrib/plugins/stoptrigger.c | 4 ++--
> contrib/plugins/uftrace.c     | 4 ++--
> include/plugins/qemu-plugin.h | 8 ++++++--
> plugins/api.c                 | 5 +++--
> plugins/core.c                | 2 +-
> tests/tcg/plugins/bb.c        | 4 ++--
> tests/tcg/plugins/discons.c   | 4 ++--
> tests/tcg/plugins/empty.c     | 4 ++--
> tests/tcg/plugins/inline.c    | 4 ++--
> tests/tcg/plugins/insn.c      | 4 ++--
> tests/tcg/plugins/mem.c       | 4 ++--
> tests/tcg/plugins/patch.c     | 4 ++--
> tests/tcg/plugins/reset.c     | 8 ++++----
> tests/tcg/plugins/setpc.c     | 4 ++--
> 26 files changed, 58 insertions(+), 53 deletions(-)
>
>diff --git a/contrib/plugins/bbv.c b/contrib/plugins/bbv.c
>index 7e9e72477d7..0e6ec673d97 100644
>--- a/contrib/plugins/bbv.c
>+++ b/contrib/plugins/bbv.c
>@@ -102,7 +102,7 @@ static void vcpu_interval_exec(unsigned int vcpu_index, void *udata)
>     fputc('\n', vcpu->file);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     uint64_t n_insns = qemu_plugin_tb_n_insns(tb);
>     uint64_t vaddr = qemu_plugin_tb_vaddr(tb);
>@@ -157,7 +157,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>     vcpus = qemu_plugin_scoreboard_new(sizeof(Vcpu));
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
> 
>     return 0;
> }
>diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c
>index c9d61de26c9..0a5349f131e 100644
>--- a/contrib/plugins/cache.c
>+++ b/contrib/plugins/cache.c
>@@ -462,7 +462,7 @@ static void vcpu_insn_exec(unsigned int vcpu_index, void *userdata)
>     g_mutex_unlock(&l2_ucache_locks[cache_idx]);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n_insns;
>     size_t i;
>@@ -844,7 +844,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
>     l1_icache_locks = g_new0(GMutex, cores);
>     l2_ucache_locks = use_l2 ? g_new0(GMutex, cores) : NULL;
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
> 
>     miss_ht = g_hash_table_new_full(g_int64_hash, g_int64_equal, NULL, insn_free);
>diff --git a/contrib/plugins/cflow.c b/contrib/plugins/cflow.c
>index 9a850c8c0cc..319a7a7fc07 100644
>--- a/contrib/plugins/cflow.c
>+++ b/contrib/plugins/cflow.c
>@@ -297,7 +297,7 @@ static void vcpu_tb_branched_exec(unsigned int cpu_index, void *udata)
>  * instructions for their execution.
>  *
>  */
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     uint64_t pc = qemu_plugin_tb_vaddr(tb);
>     size_t insns = qemu_plugin_tb_n_insns(tb);
>@@ -387,7 +387,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/cpp.cpp b/contrib/plugins/cpp.cpp
>index 34243cc922f..a0bb261fbe8 100644
>--- a/contrib/plugins/cpp.cpp
>+++ b/contrib/plugins/cpp.cpp
>@@ -363,7 +363,7 @@
> 
> QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
> }
> 
>@@ -371,6 +371,6 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>                                            const qemu_info_t *info,
>                                            int argc, char **argv)
> {
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/drcov.c b/contrib/plugins/drcov.c
>index 2dc08512d44..5a18a8f48b4 100644
>--- a/contrib/plugins/drcov.c
>+++ b/contrib/plugins/drcov.c
>@@ -119,7 +119,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
>     g_mutex_unlock(&lock);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     uint64_t pc = qemu_plugin_tb_vaddr(tb);
>     size_t n = qemu_plugin_tb_n_insns(tb);
>@@ -156,7 +156,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
> 
>     return 0;
>diff --git a/contrib/plugins/execlog.c b/contrib/plugins/execlog.c
>index 8329112305c..74325495cce 100644
>--- a/contrib/plugins/execlog.c
>+++ b/contrib/plugins/execlog.c
>@@ -177,7 +177,7 @@ static void vcpu_insn_exec(unsigned int cpu_index, void *udata)
>  * QEMU convert code by translation block (TB). By hooking here we can then hook
>  * a callback on each instruction and memory access.
>  */
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     struct qemu_plugin_insn *insn;
>     bool skip = (imatches || amatches);
>@@ -482,7 +482,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> 
>     /* Register init, translation block and exit callbacks */
>     qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
> 
>     return 0;
>diff --git a/contrib/plugins/hotblocks.c b/contrib/plugins/hotblocks.c
>index 682b160019a..ea746b513a1 100644
>--- a/contrib/plugins/hotblocks.c
>+++ b/contrib/plugins/hotblocks.c
>@@ -121,7 +121,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
>  * Otherwise a helper is inserted which calls the vcpu_tb_exec
>  * callback.
>  */
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     ExecCount *cnt;
>     uint64_t pc = qemu_plugin_tb_vaddr(tb);
>@@ -186,7 +186,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/hotpages.c b/contrib/plugins/hotpages.c
>index d8321a73303..56e5698ce1d 100644
>--- a/contrib/plugins/hotpages.c
>+++ b/contrib/plugins/hotpages.c
>@@ -148,7 +148,7 @@ static void vcpu_haddr(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
>     g_mutex_unlock(&lock);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n = qemu_plugin_tb_n_insns(tb);
>     size_t i;
>@@ -197,7 +197,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/howvec.c b/contrib/plugins/howvec.c
>index feabc10bf44..55db9ff8028 100644
>--- a/contrib/plugins/howvec.c
>+++ b/contrib/plugins/howvec.c
>@@ -310,7 +310,7 @@ static struct qemu_plugin_scoreboard *find_counter(
>     return NULL;
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n = qemu_plugin_tb_n_insns(tb);
>     size_t i;
>@@ -392,7 +392,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/hwprofile.c b/contrib/plugins/hwprofile.c
>index fcc993015d7..87b0267ffe3 100644
>--- a/contrib/plugins/hwprofile.c
>+++ b/contrib/plugins/hwprofile.c
>@@ -242,7 +242,7 @@ static void vcpu_haddr(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
>     }
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n = qemu_plugin_tb_n_insns(tb);
>     size_t i;
>@@ -319,7 +319,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
> 
>     plugin_init();
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/contrib/plugins/ips.c b/contrib/plugins/ips.c
>index a1fcba7c5d6..6f7ac1587ec 100644
>--- a/contrib/plugins/ips.c
>+++ b/contrib/plugins/ips.c
>@@ -110,7 +110,7 @@ static void every_quantum_insn(unsigned int cpu_index, void *udata)
>     update_system_time(vcpu);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n_insns = qemu_plugin_tb_n_insns(tb);
>     qemu_plugin_u64 quantum_insn =
>@@ -206,7 +206,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>     time_handle = qemu_plugin_request_time_control();
>     g_assert(time_handle);
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
>     qemu_plugin_register_vcpu_exit_cb(id, vcpu_exit, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c
>index dc527ad56e2..ed9d18460fe 100644
>--- a/contrib/plugins/lockstep.c
>+++ b/contrib/plugins/lockstep.c
>@@ -249,7 +249,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
>     log = g_slist_prepend(log, exec);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     BlockInfo *bi = g_new0(BlockInfo, 1);
>     bi->pc = qemu_plugin_tb_vaddr(tb);
>@@ -392,7 +392,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> 
>     our_id = id;
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, (void *)id);
>     return 0;
> }
>diff --git a/contrib/plugins/stoptrigger.c b/contrib/plugins/stoptrigger.c
>index 222a3f92ae0..3babd014171 100644
>--- a/contrib/plugins/stoptrigger.c
>+++ b/contrib/plugins/stoptrigger.c
>@@ -64,7 +64,7 @@ static void exit_address_reached(unsigned int cpu_index, void *udata)
>     exit_emulation(ei->exit_code, msg);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t tb_n = qemu_plugin_tb_n_insns(tb);
>     for (size_t i = 0; i < tb_n; i++) {
>@@ -150,7 +150,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>     }
> 
>     /* Register translation block and exit callbacks */
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
> 
>     return 0;
>diff --git a/contrib/plugins/uftrace.c b/contrib/plugins/uftrace.c
>index a1b10f9cf59..9b0a4963aee 100644
>--- a/contrib/plugins/uftrace.c
>+++ b/contrib/plugins/uftrace.c
>@@ -838,7 +838,7 @@ static void track_callstack(unsigned int cpu_index, void *udata)
>     trace_enter_stack(t, cs, timestamp);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n_insns = qemu_plugin_tb_n_insns(tb);
>     uintptr_t tb_pc = qemu_plugin_tb_vaddr(tb);
>@@ -987,7 +987,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>     score = qemu_plugin_scoreboard_new(sizeof(Cpu));
>     qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
>     qemu_plugin_register_atexit_cb(id, at_exit, (void *) info->system_emulation);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
> 
>     return 0;
> }
>diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h
>index 8242e054054..53daa09fc72 100644
>--- a/include/plugins/qemu-plugin.h
>+++ b/include/plugins/qemu-plugin.h
>@@ -418,13 +418,16 @@ enum qemu_plugin_cond {
> /**
>  * typedef qemu_plugin_vcpu_tb_trans_cb_t - translation callback
>  * @tb: opaque handle used for querying and instrumenting a block.
>+ * @userdata: any plugin data to pass to the @cb
>  */
>-typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(struct qemu_plugin_tb *tb);
>+typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(struct qemu_plugin_tb *tb,
>+                                               void *userdata);
> 
> /**
>  * qemu_plugin_register_vcpu_tb_trans_cb() - register a translate cb
>  * @id: plugin ID
>  * @cb: callback function
>+ * @userdata: any plugin data to pass to the @cb
>  *
>  * The @cb function is called every time a translation occurs. The @cb
>  * function is passed an opaque qemu_plugin_type which it can query
>@@ -435,7 +438,8 @@ typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(struct qemu_plugin_tb *tb);
>  */
> QEMU_PLUGIN_API
> void qemu_plugin_register_vcpu_tb_trans_cb(qemu_plugin_id_t id,
>-                                           qemu_plugin_vcpu_tb_trans_cb_t cb);
>+                                           qemu_plugin_vcpu_tb_trans_cb_t cb,
>+                                           void *userdata);
> 
> /**
>  * qemu_plugin_register_vcpu_tb_exec_cb() - register execution callback
>diff --git a/plugins/api.c b/plugins/api.c
>index 849790fe13b..774b1b80214 100644
>--- a/plugins/api.c
>+++ b/plugins/api.c
>@@ -195,9 +195,10 @@ void qemu_plugin_register_vcpu_mem_inline_per_vcpu(
> }
> 
> void qemu_plugin_register_vcpu_tb_trans_cb(qemu_plugin_id_t id,
>-                                           qemu_plugin_vcpu_tb_trans_cb_t cb)
>+                                           qemu_plugin_vcpu_tb_trans_cb_t cb,
>+                                           void *userdata)
> {
>-    plugin_register_cb(id, QEMU_PLUGIN_EV_VCPU_TB_TRANS, cb);
>+    plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_TB_TRANS, cb, userdata);
> }
> 
> void qemu_plugin_register_vcpu_syscall_cb(qemu_plugin_id_t id,
>diff --git a/plugins/core.c b/plugins/core.c
>index c77da4d36fd..d891da93040 100644
>--- a/plugins/core.c
>+++ b/plugins/core.c
>@@ -487,7 +487,7 @@ void qemu_plugin_tb_trans_cb(CPUState *cpu, struct qemu_plugin_tb *tb)
>         qemu_plugin_vcpu_tb_trans_cb_t func = cb->f.vcpu_tb_trans;
> 
>         qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS);
>-        func(tb);
>+        func(tb, cb->udata);
>         qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
>     }
> }
>diff --git a/tests/tcg/plugins/bb.c b/tests/tcg/plugins/bb.c
>index 713063f4945..90adb3ebd97 100644
>--- a/tests/tcg/plugins/bb.c
>+++ b/tests/tcg/plugins/bb.c
>@@ -77,7 +77,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
>     count->bb_count++;
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n_insns = qemu_plugin_tb_n_insns(tb);
> 
>@@ -127,7 +127,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>         qemu_plugin_register_vcpu_idle_cb(id, vcpu_idle, NULL);
>     }
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/tests/tcg/plugins/discons.c b/tests/tcg/plugins/discons.c
>index d2a163a5714..45f24397047 100644
>--- a/tests/tcg/plugins/discons.c
>+++ b/tests/tcg/plugins/discons.c
>@@ -147,7 +147,7 @@ static void insn_exec(unsigned int vcpu_index, void *userdata)
>     }
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n_insns = qemu_plugin_tb_n_insns(tb);
>     for (size_t i = 0; i < n_insns; i++) {
>@@ -215,7 +215,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> 
>     qemu_plugin_register_vcpu_discon_cb(id, QEMU_PLUGIN_DISCON_ALL,
>                                         vcpu_discon, NULL);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
> 
>     return 0;
> }
>diff --git a/tests/tcg/plugins/empty.c b/tests/tcg/plugins/empty.c
>index 5927507c18e..286b3035e61 100644
>--- a/tests/tcg/plugins/empty.c
>+++ b/tests/tcg/plugins/empty.c
>@@ -20,13 +20,13 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
>  * This allows us to measure the overhead of injecting and then
>  * removing empty instrumentation.
>  */
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> { }
> 
> QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>                                            const qemu_info_t *info,
>                                            int argc, char **argv)
> {
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     return 0;
> }
>diff --git a/tests/tcg/plugins/inline.c b/tests/tcg/plugins/inline.c
>index 3f5c49f5ede..436223db0e6 100644
>--- a/tests/tcg/plugins/inline.c
>+++ b/tests/tcg/plugins/inline.c
>@@ -223,7 +223,7 @@ static void vcpu_mem_access(unsigned int cpu_index,
>     g_mutex_unlock(&mem_lock);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     void *tb_store = tb;
>     qemu_plugin_register_vcpu_tb_exec_inline_per_vcpu(
>@@ -303,7 +303,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
>     data_tb = qemu_plugin_scoreboard_u64_in_struct(data, CPUData, data_tb);
>     data_mem = qemu_plugin_scoreboard_u64_in_struct(data, CPUData, data_mem);
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
> 
>     return 0;
>diff --git a/tests/tcg/plugins/insn.c b/tests/tcg/plugins/insn.c
>index a303275ea1b..4ab30d6df8c 100644
>--- a/tests/tcg/plugins/insn.c
>+++ b/tests/tcg/plugins/insn.c
>@@ -138,7 +138,7 @@ static void vcpu_insn_matched_exec_before(unsigned int cpu_index, void *udata)
>     }
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n = qemu_plugin_tb_n_insns(tb);
>     size_t i;
>@@ -297,7 +297,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> 
>     /* Register init, translation block and exit callbacks */
>     qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/tests/tcg/plugins/mem.c b/tests/tcg/plugins/mem.c
>index 24a3bce0bfd..e56d10574bd 100644
>--- a/tests/tcg/plugins/mem.c
>+++ b/tests/tcg/plugins/mem.c
>@@ -266,7 +266,7 @@ static void print_access(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
>     qemu_plugin_outs(out->str);
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t n = qemu_plugin_tb_n_insns(tb);
>     size_t i;
>@@ -374,7 +374,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>     mem_count = qemu_plugin_scoreboard_u64_in_struct(
>         counts, CPUCount, mem_count);
>     io_count = qemu_plugin_scoreboard_u64_in_struct(counts, CPUCount, io_count);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
>     return 0;
> }
>diff --git a/tests/tcg/plugins/patch.c b/tests/tcg/plugins/patch.c
>index 8fcf0bd409b..59215f8546e 100644
>--- a/tests/tcg/plugins/patch.c
>+++ b/tests/tcg/plugins/patch.c
>@@ -130,7 +130,7 @@ static void patch_vaddr(unsigned int vcpu_index, void *userdata)
> /*
>  * Callback on translation of a translation block.
>  */
>-static void vcpu_tb_trans_cb(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans_cb(struct qemu_plugin_tb *tb, void *userdata)
> {
>     g_autoptr(GByteArray) insn_data = g_byte_array_new();
>     uintptr_t addr = 0;
>@@ -245,7 +245,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>         return -1;
>     }
> 
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans_cb);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans_cb, NULL);
> 
>     return 0;
> }
>diff --git a/tests/tcg/plugins/reset.c b/tests/tcg/plugins/reset.c
>index 1fdf114e5e0..949f2d6160a 100644
>--- a/tests/tcg/plugins/reset.c
>+++ b/tests/tcg/plugins/reset.c
>@@ -27,7 +27,7 @@ static void tb_exec_after_reset(unsigned int vcpu_index, void *userdata)
>     qemu_plugin_uninstall(plugin_id, after_uninstall, NULL);
> }
> 
>-static void tb_trans_after_reset(struct qemu_plugin_tb *tb)
>+static void tb_trans_after_reset(struct qemu_plugin_tb *tb, void *userdata)
> {
>     g_assert(was_reset && !was_uninstalled);
>     qemu_plugin_register_vcpu_tb_exec_cb(tb, tb_exec_after_reset,
>@@ -40,7 +40,7 @@ static void after_reset(void *userdata)
>     g_assert(!was_reset && !was_uninstalled);
>     qemu_plugin_outs("reset done\n");
>     was_reset = true;
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_after_reset);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_after_reset, NULL);
> }
> 
> static void tb_exec_before_reset(unsigned int vcpu_index, void *userdata)
>@@ -49,7 +49,7 @@ static void tb_exec_before_reset(unsigned int vcpu_index, void *userdata)
>     qemu_plugin_reset(plugin_id, after_reset, (void *) plugin_id);
> }
> 
>-static void tb_trans_before_reset(struct qemu_plugin_tb *tb)
>+static void tb_trans_before_reset(struct qemu_plugin_tb *tb, void *userdata)
> {
>     g_assert(!was_reset && !was_uninstalled);
>     qemu_plugin_register_vcpu_tb_exec_cb(tb, tb_exec_before_reset,
>@@ -61,7 +61,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
>                                            int argc, char **argv)
> {
>     plugin_id = id;
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_before_reset);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_before_reset, NULL);
>     return 0;
> }
> 
>diff --git a/tests/tcg/plugins/setpc.c b/tests/tcg/plugins/setpc.c
>index 44cea064783..595571cdfd9 100644
>--- a/tests/tcg/plugins/setpc.c
>+++ b/tests/tcg/plugins/setpc.c
>@@ -73,7 +73,7 @@ static void vcpu_mem_access(unsigned int vcpu_index,
>     }
> }
> 
>-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
>+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
> {
>     size_t insns = qemu_plugin_tb_n_insns(tb);
>     for (size_t i = 0; i < insns; i++) {
>@@ -100,6 +100,6 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> {
> 
>     qemu_plugin_register_vcpu_syscall_filter_cb(id, vcpu_syscall_filter);
>-    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
>+    qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
>     return 0;
> }
>-- 
>2.43.0
>
>


  reply	other threads:[~2026-06-11  5:58 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-03 20:51 [PATCH 00/25] plugins: refactor API to maintain state through callbacks chain Pierrick Bouvier
2026-06-03 20:51 ` [PATCH 01/25] plugins: bump version Pierrick Bouvier
2026-06-08  5:58   ` Manos Pitsidianakis
2026-06-08 16:53     ` Pierrick Bouvier
2026-06-03 20:51 ` [PATCH 02/25] plugins: add userdata for qemu_plugin_{uninstall, reset} Pierrick Bouvier
2026-06-08  6:01   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 03/25] plugins: add userdata to qemu_plugin_register_flush_cb Pierrick Bouvier
2026-06-08  6:05   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 04/25] plugins: remove type qemu_plugin_simple_cb_t Pierrick Bouvier
2026-06-08  6:10   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 05/25] plugins: remove qemu_plugin_id_t from qemu_plugin_udata_cb_t Pierrick Bouvier
2026-06-11  5:13   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 06/25] plugins: remove qemu_plugin_id_t from qemu_plugin_vcpu_simple_cb_t Pierrick Bouvier
2026-06-11  5:17   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 07/25] plugins: add userdata to qemu_plugin_register_vcpu_init_cb Pierrick Bouvier
2026-06-11  5:19   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 08/25] plugins: add userdata to qemu_plugin_register_vcpu_exit_cb Pierrick Bouvier
2026-06-11  5:31   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 09/25] plugins: add userdata to qemu_plugin_register_vcpu_idle_cb Pierrick Bouvier
2026-06-11  5:32   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 10/25] plugins: add userdata to qemu_plugin_register_vcpu_resume_cb Pierrick Bouvier
2026-06-11  5:33   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 11/25] plugins: add userdata to qemu_plugin_vcpu_for_each Pierrick Bouvier
2026-06-11  5:34   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 12/25] plugins: remove type qemu_plugin_vcpu_simple_cb_t Pierrick Bouvier
2026-06-11  5:35   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 13/25] plugins: add userdata to qemu_plugin_register_vcpu_discon_cb Pierrick Bouvier
2026-06-11  5:35   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 14/25] plugins: remove qemu_plugin_id from qemu_plugin_vcpu_discon_cb_t Pierrick Bouvier
2026-06-11  5:36   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 15/25] plugins: remove qemu_plugin_id from qemu_plugin_vcpu_tb_trans_cb_t Pierrick Bouvier
2026-06-11  5:55   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 16/25] plugins: add userdata to qemu_plugin_vcpu_tb_trans_cb_t Pierrick Bouvier
2026-06-11  5:57   ` Manos Pitsidianakis [this message]
2026-06-03 20:51 ` [PATCH 17/25] plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_cb_t Pierrick Bouvier
2026-06-11  5:58   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 18/25] plugins: add userdata to qemu_plugin_register_vcpu_syscall_cb Pierrick Bouvier
2026-06-11  6:00   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 19/25] plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_filter_cb_t Pierrick Bouvier
2026-06-11  6:02   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 20/25] plugins: add userdata to qemu_plugin_register_vcpu_syscall_filter_cb Pierrick Bouvier
2026-06-11  6:03   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 21/25] plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_ret_cb_t Pierrick Bouvier
2026-06-11  6:10   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 22/25] plugins: add userdata to qemu_plugin_register_vcpu_syscall_ret_cb Pierrick Bouvier
2026-06-11  6:08   ` Manos Pitsidianakis
2026-06-03 20:51 ` [PATCH 23/25] scripts/checkpatch: ignore spaces required around some operators in C++ Pierrick Bouvier
2026-06-08  9:21   ` Peter Maydell
2026-06-08 16:56     ` Pierrick Bouvier
2026-06-03 20:51 ` [PATCH 24/25] scripts/checkpatch: remove check on forbidden space before '[' " Pierrick Bouvier
2026-06-04  6:22   ` Philippe Mathieu-Daudé
2026-06-11  6:07   ` Manos Pitsidianakis
2026-06-11  6:28   ` Chao Liu
2026-06-03 20:51 ` [PATCH 25/25] plugins/cpp: register callbacks using captureless lambda Pierrick Bouvier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tggdxc.1dpccfc9pplai@linaro.org \
    --to=manos.pitsidianakis@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=brian.cain@oss.qualcomm.com \
    --cc=chao.liu.zevorn@gmail.com \
    --cc=erdnaxe@crans.org \
    --cc=philmd@linaro.org \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.