diff --git a/contrib/plugins/bbv.c b/contrib/plugins/bbv.c index 7e9e72477d..0e6ec673d9 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 c9d61de26c..0a5349f131 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 9a850c8c0c..319a7a7fc0 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 34243cc922..a0bb261fbe 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 2dc08512d4..5a18a8f48b 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 8329112305..74325495cc 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 682b160019..ea746b513a 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 d8321a7330..56e5698ce1 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 feabc10bf4..55db9ff802 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 fcc993015d..87b0267ffe 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 a1fcba7c5d..6f7ac1587e 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 dc527ad56e..ed9d18460f 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 222a3f92ae..3babd01417 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 a1b10f9cf5..9b0a4963ae 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 8242e05405..53daa09fc7 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 849790fe13..774b1b8021 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 0ae0dc49ae..f30009d50d 100644 --- a/plugins/core.c +++ b/plugins/core.c @@ -488,7 +488,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 713063f494..90adb3ebd9 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 d2a163a571..45f2439704 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 5927507c18..286b3035e6 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 3f5c49f5ed..436223db0e 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 a303275ea1..4ab30d6df8 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 24a3bce0bf..e56d10574b 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 8fcf0bd409..59215f8546 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 1fdf114e5e..949f2d6160 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 44cea06478..595571cdfd 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; }