On Wed, Jun 3, 2026 at 11:52 PM Pierrick Bouvier <[email protected]> wrote: > > We can now rely on userdata being always available to pass down this id > if needed. > > In our plugins, only tests/tcg/plugins/reset.c was using it. > > Signed-off-by: Pierrick Bouvier <[email protected]> > ---
Reviewed-by: Manos Pitsidianakis <[email protected]> > contrib/plugins/bbv.c | 2 +- > contrib/plugins/cache.c | 2 +- > contrib/plugins/cflow.c | 2 +- > contrib/plugins/drcov.c | 2 +- > contrib/plugins/execlog.c | 2 +- > contrib/plugins/hotblocks.c | 2 +- > contrib/plugins/hotpages.c | 2 +- > contrib/plugins/howvec.c | 2 +- > contrib/plugins/hwprofile.c | 2 +- > contrib/plugins/ips.c | 2 +- > contrib/plugins/lockstep.c | 8 ++++---- > contrib/plugins/stoptrigger.c | 2 +- > contrib/plugins/traps.c | 2 +- > contrib/plugins/uftrace.c | 2 +- > include/plugins/qemu-plugin.h | 3 +-- > plugins/core.c | 2 +- > plugins/loader.c | 4 ++-- > tests/tcg/plugins/bb.c | 2 +- > tests/tcg/plugins/inline.c | 2 +- > tests/tcg/plugins/insn.c | 2 +- > tests/tcg/plugins/mem.c | 2 +- > tests/tcg/plugins/reset.c | 7 ++++--- > tests/tcg/plugins/syscall.c | 2 +- > 23 files changed, 30 insertions(+), 30 deletions(-) > > diff --git a/contrib/plugins/bbv.c b/contrib/plugins/bbv.c > index 5913cc6c637..f2b1b258a90 100644 > --- a/contrib/plugins/bbv.c > +++ b/contrib/plugins/bbv.c > @@ -28,7 +28,7 @@ static char *filename; > static struct qemu_plugin_scoreboard *vcpus; > static uint64_t interval = 100000000; > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > Vcpu *vcpu; > > diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c > index 56508587d3a..f41ddb0aa43 100644 > --- a/contrib/plugins/cache.c > +++ b/contrib/plugins/cache.c > @@ -694,7 +694,7 @@ finish: > g_list_free(miss_insns); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > log_stats(); > log_top_insns(); > diff --git a/contrib/plugins/cflow.c b/contrib/plugins/cflow.c > index b5e33f25f9b..4d00879ccad 100644 > --- a/contrib/plugins/cflow.c > +++ b/contrib/plugins/cflow.c > @@ -134,7 +134,7 @@ static gboolean filter_non_branches(gpointer key, > gpointer value, > return node->dest_count == 0; > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) result = g_string_new("collected "); > GList *data; > diff --git a/contrib/plugins/drcov.c b/contrib/plugins/drcov.c > index 5edc94dcaf6..458c0d2084d 100644 > --- a/contrib/plugins/drcov.c > +++ b/contrib/plugins/drcov.c > @@ -86,7 +86,7 @@ static void count_block(gpointer data, gpointer user_data) > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > unsigned long count = 0; > g_mutex_lock(&lock); > diff --git a/contrib/plugins/execlog.c b/contrib/plugins/execlog.c > index d00d9c4ff39..d347ac25b6f 100644 > --- a/contrib/plugins/execlog.c > +++ b/contrib/plugins/execlog.c > @@ -400,7 +400,7 @@ static void vcpu_init(qemu_plugin_id_t id, unsigned int > vcpu_index) > /** > * On plugin exit, print last instruction in cache > */ > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > guint i; > g_rw_lock_reader_lock(&expand_array_lock); > diff --git a/contrib/plugins/hotblocks.c b/contrib/plugins/hotblocks.c > index 8ecf0339974..92859872ac9 100644 > --- a/contrib/plugins/hotblocks.c > +++ b/contrib/plugins/hotblocks.c > @@ -70,7 +70,7 @@ static void exec_count_free(gpointer key, gpointer value, > gpointer user_data) > qemu_plugin_scoreboard_free(cnt->exec_count); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report = g_string_new("collected "); > GList *counts, *sorted_counts, *it; > diff --git a/contrib/plugins/hotpages.c b/contrib/plugins/hotpages.c > index 9d48ac969eb..a6d83b06c75 100644 > --- a/contrib/plugins/hotpages.c > +++ b/contrib/plugins/hotpages.c > @@ -73,7 +73,7 @@ static gint cmp_access_count(gconstpointer a, gconstpointer > b, gpointer d) > } > > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report = g_string_new("Addr, RCPUs, Reads, WCPUs, > Writes\n"); > int i; > diff --git a/contrib/plugins/howvec.c b/contrib/plugins/howvec.c > index 42bddb6566d..75728896198 100644 > --- a/contrib/plugins/howvec.c > +++ b/contrib/plugins/howvec.c > @@ -172,7 +172,7 @@ static void free_record(gpointer data) > g_free(rec); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report = g_string_new("Instruction Classes:\n"); > int i; > diff --git a/contrib/plugins/hwprofile.c b/contrib/plugins/hwprofile.c > index a9838ccc879..b7f96117e94 100644 > --- a/contrib/plugins/hwprofile.c > +++ b/contrib/plugins/hwprofile.c > @@ -106,7 +106,7 @@ static void fmt_dev_record(GString *s, DeviceCounts *rec) > g_string_append_c(s, '\n'); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report = g_string_new(""); > GList *counts; > diff --git a/contrib/plugins/ips.c b/contrib/plugins/ips.c > index f110c565bc4..7614ae1eafd 100644 > --- a/contrib/plugins/ips.c > +++ b/contrib/plugins/ips.c > @@ -124,7 +124,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct > qemu_plugin_tb *tb) > quantum_insn, max_insn_per_quantum, NULL); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *udata) > +static void plugin_exit(void *udata) > { > qemu_plugin_scoreboard_free(vcpus); > } > diff --git a/contrib/plugins/lockstep.c b/contrib/plugins/lockstep.c > index 36b003ead2d..c1c2b0aca8e 100644 > --- a/contrib/plugins/lockstep.c > +++ b/contrib/plugins/lockstep.c > @@ -77,7 +77,7 @@ static char *path_to_unlink; > > static bool verbose; > > -static void plugin_cleanup(qemu_plugin_id_t id, void *userdata) > +static void plugin_cleanup(void *userdata) > { > /* Free our block data */ > g_slist_free_full(blocks, &g_free); > @@ -90,7 +90,7 @@ static void plugin_cleanup(qemu_plugin_id_t id, void > *userdata) > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) out = g_string_new("No divergence :-)\n"); > g_string_append_printf(out, "Executed %ld/%d blocks\n", > @@ -98,7 +98,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) > g_string_append_printf(out, "Executed ~%ld instructions\n", insn_count); > qemu_plugin_outs(out->str); > > - plugin_cleanup(id, NULL); > + plugin_cleanup(NULL); > } > > /* > @@ -393,6 +393,6 @@ 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_atexit_cb(id, plugin_exit, 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 b3a6ed66a7b..40f8fd313d7 100644 > --- a/contrib/plugins/stoptrigger.c > +++ b/contrib/plugins/stoptrigger.c > @@ -93,7 +93,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct > qemu_plugin_tb *tb) > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_hash_table_destroy(addrs_ht); > qemu_plugin_scoreboard_free(insn_count_sb); > diff --git a/contrib/plugins/traps.c b/contrib/plugins/traps.c > index a741580fbf8..4b879a8212a 100644 > --- a/contrib/plugins/traps.c > +++ b/contrib/plugins/traps.c > @@ -44,7 +44,7 @@ static void vcpu_discon(qemu_plugin_id_t id, unsigned int > vcpu_index, > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report; > report = g_string_new("VCPU, interrupts, exceptions, hostcalls\n"); > diff --git a/contrib/plugins/uftrace.c b/contrib/plugins/uftrace.c > index f974090e23e..a071a34ea75 100644 > --- a/contrib/plugins/uftrace.c > +++ b/contrib/plugins/uftrace.c > @@ -928,7 +928,7 @@ static void vcpu_end(unsigned int vcpu_index) > memset(cpu, 0, sizeof(Cpu)); > } > > -static void at_exit(qemu_plugin_id_t id, void *data) > +static void at_exit(void *data) > { > bool system_emulation = (bool) data; > g_autoptr(GArray) traces = g_array_new(0, 0, sizeof(Trace *)); > diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h > index 3c6f32bacfe..d7d972103cb 100644 > --- a/include/plugins/qemu-plugin.h > +++ b/include/plugins/qemu-plugin.h > @@ -142,11 +142,10 @@ QEMU_PLUGIN_EXPORT int > qemu_plugin_install(qemu_plugin_id_t id, > > /** > * typedef qemu_plugin_udata_cb_t - callback with user data > - * @id: the unique qemu_plugin_id_t > * @userdata: a pointer to some user data supplied when the callback > * was registered. > */ > -typedef void (*qemu_plugin_udata_cb_t)(qemu_plugin_id_t id, void *userdata); > +typedef void (*qemu_plugin_udata_cb_t)(void *userdata); > > /** > * typedef qemu_plugin_vcpu_simple_cb_t - vcpu callback > diff --git a/plugins/core.c b/plugins/core.c > index 21a3c5b15cf..b0532e8d0de 100644 > --- a/plugins/core.c > +++ b/plugins/core.c > @@ -147,7 +147,7 @@ static void plugin_cb__udata(enum qemu_plugin_event ev) > QLIST_FOREACH_SAFE_RCU(cb, &plugin.cb_lists[ev], entry, next) { > qemu_plugin_udata_cb_t func = cb->f.udata; > > - func(cb->ctx->id, cb->udata); > + func(cb->udata); > } > break; > default: > diff --git a/plugins/loader.c b/plugins/loader.c > index 0d587c344c4..b10ebe8cc05 100644 > --- a/plugins/loader.c > +++ b/plugins/loader.c > @@ -339,7 +339,7 @@ static void plugin_reset_destroy__locked(struct > qemu_plugin_reset_data *data) > if (data->reset) { > g_assert(ctx->resetting); > if (data->cb) { > - data->cb(ctx->id, data->userdata); > + data->cb(data->userdata); > } > ctx->resetting = false; > g_free(data); > @@ -358,7 +358,7 @@ static void plugin_reset_destroy__locked(struct > qemu_plugin_reset_data *data) > g_assert(success); > QTAILQ_REMOVE(&plugin.ctxs, ctx, entry); > if (data->cb) { > - data->cb(ctx->id, data->userdata); > + data->cb(data->userdata); > } > if (!g_module_close(ctx->handle)) { > warn_report("%s: %s", __func__, g_module_error()); > diff --git a/tests/tcg/plugins/bb.c b/tests/tcg/plugins/bb.c > index 36776dee1e1..8a854408aaa 100644 > --- a/tests/tcg/plugins/bb.c > +++ b/tests/tcg/plugins/bb.c > @@ -40,7 +40,7 @@ static void gen_one_cpu_report(CPUCount *count, GString > *report, > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) report = g_string_new(""); > > diff --git a/tests/tcg/plugins/inline.c b/tests/tcg/plugins/inline.c > index 73dde995781..1d17884b40b 100644 > --- a/tests/tcg/plugins/inline.c > +++ b/tests/tcg/plugins/inline.c > @@ -121,7 +121,7 @@ static void stats_mem(void) > g_assert(inl_per_vcpu == expected); > } > > -static void plugin_exit(qemu_plugin_id_t id, void *udata) > +static void plugin_exit(void *udata) > { > const unsigned int num_cpus = qemu_plugin_num_vcpus(); > g_autoptr(GString) stats = g_string_new(""); > diff --git a/tests/tcg/plugins/insn.c b/tests/tcg/plugins/insn.c > index e6c5207cd69..12421054f67 100644 > --- a/tests/tcg/plugins/insn.c > +++ b/tests/tcg/plugins/insn.c > @@ -190,7 +190,7 @@ static void vcpu_tb_trans(qemu_plugin_id_t id, struct > qemu_plugin_tb *tb) > } > } > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) out = g_string_new(NULL); > int i; > diff --git a/tests/tcg/plugins/mem.c b/tests/tcg/plugins/mem.c > index 6b0732dc0fd..5cdf71c7e49 100644 > --- a/tests/tcg/plugins/mem.c > +++ b/tests/tcg/plugins/mem.c > @@ -68,7 +68,7 @@ static gint addr_order(gconstpointer a, gconstpointer b, > gpointer d) > } > > > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > g_autoptr(GString) out = g_string_new(""); > > diff --git a/tests/tcg/plugins/reset.c b/tests/tcg/plugins/reset.c > index 6ea675b8095..ef5a32781b2 100644 > --- a/tests/tcg/plugins/reset.c > +++ b/tests/tcg/plugins/reset.c > @@ -14,7 +14,7 @@ static qemu_plugin_id_t plugin_id; > static bool was_reset; > static bool was_uninstalled; > > -static void after_uninstall(qemu_plugin_id_t id, void *userdata) > +static void after_uninstall(void *userdata) > { > g_assert(was_reset && !was_uninstalled); > qemu_plugin_outs("uninstall done\n"); > @@ -34,8 +34,9 @@ static void tb_trans_after_reset(qemu_plugin_id_t id, > struct qemu_plugin_tb *tb) > QEMU_PLUGIN_CB_NO_REGS, NULL); > } > > -static void after_reset(qemu_plugin_id_t id, void *userdata) > +static void after_reset(void *userdata) > { > + qemu_plugin_id_t id = (qemu_plugin_id_t) userdata; > g_assert(!was_reset && !was_uninstalled); > qemu_plugin_outs("reset done\n"); > was_reset = true; > @@ -45,7 +46,7 @@ static void after_reset(qemu_plugin_id_t id, void *userdata) > static void tb_exec_before_reset(unsigned int vcpu_index, void *userdata) > { > g_assert(!was_reset && !was_uninstalled); > - qemu_plugin_reset(plugin_id, after_reset, NULL); > + qemu_plugin_reset(plugin_id, after_reset, (void *) plugin_id); > } > > static void tb_trans_before_reset(qemu_plugin_id_t id, struct qemu_plugin_tb > *tb) > diff --git a/tests/tcg/plugins/syscall.c b/tests/tcg/plugins/syscall.c > index 5658f830879..938646f9359 100644 > --- a/tests/tcg/plugins/syscall.c > +++ b/tests/tcg/plugins/syscall.c > @@ -207,7 +207,7 @@ static gint comp_func(gconstpointer ea, gconstpointer eb, > gpointer d) > } > > /* ************************************************************************* > */ > -static void plugin_exit(qemu_plugin_id_t id, void *p) > +static void plugin_exit(void *p) > { > if (!statistics) { > return; > -- > 2.43.0 > >
