plugins: add userdata to qemu_plugin_vcpu_tb_trans_cb_t
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-17-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
285c40aaac55df3fe40869f526f7b54e01d02943
26 files changed
+58
-53
contrib/plugins/bbv.c
+2
-2
@@ -102,7 +102,7 @@ static void vcpu_interval_exec(unsigned int vcpu_index, void *udata)
102
fputc('\n', vcpu->file);
103
}
104
105
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
105
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
106
{
107
uint64_t n_insns = qemu_plugin_tb_n_insns(tb);
108
uint64_t vaddr = qemu_plugin_tb_vaddr(tb);
@@ -157,7 +157,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
157
vcpus = qemu_plugin_scoreboard_new(sizeof(Vcpu));
158
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
159
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
160
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
160
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
161
162
return 0;
163
}
contrib/plugins/cache.c
+2
-2
@@ -462,7 +462,7 @@ static void vcpu_insn_exec(unsigned int vcpu_index, void *userdata)
462
g_mutex_unlock(&l2_ucache_locks[cache_idx]);
463
}
464
465
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
465
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
466
{
467
size_t n_insns;
468
size_t i;
@@ -844,7 +844,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
844
l1_icache_locks = g_new0(GMutex, cores);
845
l2_ucache_locks = use_l2 ? g_new0(GMutex, cores) : NULL;
846
847
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
847
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
848
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
849
850
miss_ht = g_hash_table_new_full(g_int64_hash, g_int64_equal, NULL, insn_free);
contrib/plugins/cflow.c
+2
-2
@@ -297,7 +297,7 @@ static void vcpu_tb_branched_exec(unsigned int cpu_index, void *udata)
297
* instructions for their execution.
298
*
299
*/
300
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
300
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
301
{
302
uint64_t pc = qemu_plugin_tb_vaddr(tb);
303
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,
387
388
plugin_init();
389
390
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
390
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
391
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
392
return 0;
393
}
contrib/plugins/cpp.cpp
+2
-2
@@ -363,7 +363,7 @@
363
364
QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
365
366
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
366
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
367
{
368
}
369
@@ -371,6 +371,6 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
371
const qemu_info_t *info,
372
int argc, char **argv)
373
{
374
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
374
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
375
return 0;
376
}
contrib/plugins/drcov.c
+2
-2
@@ -119,7 +119,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
119
g_mutex_unlock(&lock);
120
}
121
122
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
122
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
123
{
124
uint64_t pc = qemu_plugin_tb_vaddr(tb);
125
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,
156
157
plugin_init();
158
159
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
159
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
160
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
161
162
return 0;
contrib/plugins/execlog.c
+2
-2
@@ -177,7 +177,7 @@ static void vcpu_insn_exec(unsigned int cpu_index, void *udata)
177
* QEMU convert code by translation block (TB). By hooking here we can then hook
178
* a callback on each instruction and memory access.
179
*/
180
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
180
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
181
{
182
struct qemu_plugin_insn *insn;
183
bool skip = (imatches || amatches);
@@ -482,7 +482,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
482
483
/* Register init, translation block and exit callbacks */
484
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
485
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
485
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
486
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
487
488
return 0;
contrib/plugins/hotblocks.c
+2
-2
@@ -121,7 +121,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
121
* Otherwise a helper is inserted which calls the vcpu_tb_exec
122
* callback.
123
*/
124
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
124
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
125
{
126
ExecCount *cnt;
127
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,
186
187
plugin_init();
188
189
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
189
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
190
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
191
return 0;
192
}
contrib/plugins/hotpages.c
+2
-2
@@ -148,7 +148,7 @@ static void vcpu_haddr(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
148
g_mutex_unlock(&lock);
149
}
150
151
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
151
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
152
{
153
size_t n = qemu_plugin_tb_n_insns(tb);
154
size_t i;
@@ -197,7 +197,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
197
198
plugin_init();
199
200
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
200
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
201
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
202
return 0;
203
}
contrib/plugins/howvec.c
+2
-2
@@ -310,7 +310,7 @@ static struct qemu_plugin_scoreboard *find_counter(
310
return NULL;
311
}
312
313
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
313
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
314
{
315
size_t n = qemu_plugin_tb_n_insns(tb);
316
size_t i;
@@ -392,7 +392,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
392
393
plugin_init();
394
395
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
395
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
396
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
397
return 0;
398
}
contrib/plugins/hwprofile.c
+2
-2
@@ -242,7 +242,7 @@ static void vcpu_haddr(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
242
}
243
}
244
245
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
245
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
246
{
247
size_t n = qemu_plugin_tb_n_insns(tb);
248
size_t i;
@@ -319,7 +319,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info,
319
320
plugin_init();
321
322
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
322
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
323
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
324
return 0;
325
}
contrib/plugins/ips.c
+2
-2
@@ -110,7 +110,7 @@ static void every_quantum_insn(unsigned int cpu_index, void *udata)
110
update_system_time(vcpu);
111
}
112
113
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
113
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
114
{
115
size_t n_insns = qemu_plugin_tb_n_insns(tb);
116
qemu_plugin_u64 quantum_insn =
@@ -206,7 +206,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
206
time_handle = qemu_plugin_request_time_control();
207
g_assert(time_handle);
208
209
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
209
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
210
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
211
qemu_plugin_register_vcpu_exit_cb(id, vcpu_exit, NULL);
212
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
contrib/plugins/lockstep.c
+2
-2
@@ -249,7 +249,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
249
log = g_slist_prepend(log, exec);
250
}
251
252
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
252
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
253
{
254
BlockInfo *bi = g_new0(BlockInfo, 1);
255
bi->pc = qemu_plugin_tb_vaddr(tb);
@@ -392,7 +392,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
392
393
our_id = id;
394
395
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
395
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
396
qemu_plugin_register_atexit_cb(id, plugin_exit, (void *)id);
397
return 0;
398
}
contrib/plugins/stoptrigger.c
+2
-2
@@ -64,7 +64,7 @@ static void exit_address_reached(unsigned int cpu_index, void *udata)
64
exit_emulation(ei->exit_code, msg);
65
}
66
67
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
67
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
68
{
69
size_t tb_n = qemu_plugin_tb_n_insns(tb);
70
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,
150
}
151
152
/* Register translation block and exit callbacks */
153
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
153
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
154
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
155
156
return 0;
contrib/plugins/uftrace.c
+2
-2
@@ -838,7 +838,7 @@ static void track_callstack(unsigned int cpu_index, void *udata)
838
trace_enter_stack(t, cs, timestamp);
839
}
840
841
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
841
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
842
{
843
size_t n_insns = qemu_plugin_tb_n_insns(tb);
844
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,
987
score = qemu_plugin_scoreboard_new(sizeof(Cpu));
988
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
989
qemu_plugin_register_atexit_cb(id, at_exit, (void *) info->system_emulation);
990
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
990
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
991
992
return 0;
993
}
include/plugins/qemu-plugin.h
+6
-2
@@ -418,13 +418,16 @@ enum qemu_plugin_cond {
418
/**
419
* typedef qemu_plugin_vcpu_tb_trans_cb_t - translation callback
420
* @tb: opaque handle used for querying and instrumenting a block.
421
+ * @userdata: any plugin data to pass to the @cb
422
*/
422
-typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(struct qemu_plugin_tb *tb);
423
+typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(struct qemu_plugin_tb *tb,
424
+ void *userdata);
425
426
/**
427
* qemu_plugin_register_vcpu_tb_trans_cb() - register a translate cb
428
* @id: plugin ID
429
* @cb: callback function
430
+ * @userdata: any plugin data to pass to the @cb
431
*
432
* The @cb function is called every time a translation occurs. The @cb
433
* 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);
438
*/
439
QEMU_PLUGIN_API
440
void qemu_plugin_register_vcpu_tb_trans_cb(qemu_plugin_id_t id,
438
- qemu_plugin_vcpu_tb_trans_cb_t cb);
441
+ qemu_plugin_vcpu_tb_trans_cb_t cb,
442
+ void *userdata);
443
444
/**
445
* qemu_plugin_register_vcpu_tb_exec_cb() - register execution callback
plugins/api.c
+3
-2
@@ -195,9 +195,10 @@ void qemu_plugin_register_vcpu_mem_inline_per_vcpu(
195
}
196
197
void qemu_plugin_register_vcpu_tb_trans_cb(qemu_plugin_id_t id,
198
- qemu_plugin_vcpu_tb_trans_cb_t cb)
198
+ qemu_plugin_vcpu_tb_trans_cb_t cb,
199
+ void *userdata)
200
{
200
- plugin_register_cb(id, QEMU_PLUGIN_EV_VCPU_TB_TRANS, cb);
201
+ plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_TB_TRANS, cb, userdata);
202
}
203
204
void qemu_plugin_register_vcpu_syscall_cb(qemu_plugin_id_t id,
plugins/core.c
+1
-1
@@ -488,7 +488,7 @@ void qemu_plugin_tb_trans_cb(CPUState *cpu, struct qemu_plugin_tb *tb)
488
qemu_plugin_vcpu_tb_trans_cb_t func = cb->f.vcpu_tb_trans;
489
490
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS);
491
- func(tb);
491
+ func(tb, cb->udata);
492
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
493
}
494
}
tests/tcg/plugins/bb.c
+2
-2
@@ -77,7 +77,7 @@ static void vcpu_tb_exec(unsigned int cpu_index, void *udata)
77
count->bb_count++;
78
}
79
80
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
80
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
81
{
82
size_t n_insns = qemu_plugin_tb_n_insns(tb);
83
@@ -127,7 +127,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
127
qemu_plugin_register_vcpu_idle_cb(id, vcpu_idle, NULL);
128
}
129
130
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
130
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
131
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
132
return 0;
133
}
tests/tcg/plugins/discons.c
+2
-2
@@ -147,7 +147,7 @@ static void insn_exec(unsigned int vcpu_index, void *userdata)
147
}
148
}
149
150
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
150
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
151
{
152
size_t n_insns = qemu_plugin_tb_n_insns(tb);
153
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,
215
216
qemu_plugin_register_vcpu_discon_cb(id, QEMU_PLUGIN_DISCON_ALL,
217
vcpu_discon, NULL);
218
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
218
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
219
220
return 0;
221
}
tests/tcg/plugins/empty.c
+2
-2
@@ -20,13 +20,13 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
20
* This allows us to measure the overhead of injecting and then
21
* removing empty instrumentation.
22
*/
23
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
23
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
24
{ }
25
26
QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
27
const qemu_info_t *info,
28
int argc, char **argv)
29
{
30
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
30
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
31
return 0;
32
}
tests/tcg/plugins/inline.c
+2
-2
@@ -223,7 +223,7 @@ static void vcpu_mem_access(unsigned int cpu_index,
223
g_mutex_unlock(&mem_lock);
224
}
225
226
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
226
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
227
{
228
void *tb_store = tb;
229
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,
303
data_tb = qemu_plugin_scoreboard_u64_in_struct(data, CPUData, data_tb);
304
data_mem = qemu_plugin_scoreboard_u64_in_struct(data, CPUData, data_mem);
305
306
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
306
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
307
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
308
309
return 0;
tests/tcg/plugins/insn.c
+2
-2
@@ -138,7 +138,7 @@ static void vcpu_insn_matched_exec_before(unsigned int cpu_index, void *udata)
138
}
139
}
140
141
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
141
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
142
{
143
size_t n = qemu_plugin_tb_n_insns(tb);
144
size_t i;
@@ -297,7 +297,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
297
298
/* Register init, translation block and exit callbacks */
299
qemu_plugin_register_vcpu_init_cb(id, vcpu_init, NULL);
300
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
300
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
301
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
302
return 0;
303
}
tests/tcg/plugins/mem.c
+2
-2
@@ -266,7 +266,7 @@ static void print_access(unsigned int cpu_index, qemu_plugin_meminfo_t meminfo,
266
qemu_plugin_outs(out->str);
267
}
268
269
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
269
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
270
{
271
size_t n = qemu_plugin_tb_n_insns(tb);
272
size_t i;
@@ -374,7 +374,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
374
mem_count = qemu_plugin_scoreboard_u64_in_struct(
375
counts, CPUCount, mem_count);
376
io_count = qemu_plugin_scoreboard_u64_in_struct(counts, CPUCount, io_count);
377
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
377
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
378
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
379
return 0;
380
}
tests/tcg/plugins/patch.c
+2
-2
@@ -130,7 +130,7 @@ static void patch_vaddr(unsigned int vcpu_index, void *userdata)
130
/*
131
* Callback on translation of a translation block.
132
*/
133
-static void vcpu_tb_trans_cb(struct qemu_plugin_tb *tb)
133
+static void vcpu_tb_trans_cb(struct qemu_plugin_tb *tb, void *userdata)
134
{
135
g_autoptr(GByteArray) insn_data = g_byte_array_new();
136
uintptr_t addr = 0;
@@ -245,7 +245,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
245
return -1;
246
}
247
248
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans_cb);
248
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans_cb, NULL);
249
250
return 0;
251
}
tests/tcg/plugins/reset.c
+4
-4
@@ -27,7 +27,7 @@ static void tb_exec_after_reset(unsigned int vcpu_index, void *userdata)
27
qemu_plugin_uninstall(plugin_id, after_uninstall, NULL);
28
}
29
30
-static void tb_trans_after_reset(struct qemu_plugin_tb *tb)
30
+static void tb_trans_after_reset(struct qemu_plugin_tb *tb, void *userdata)
31
{
32
g_assert(was_reset && !was_uninstalled);
33
qemu_plugin_register_vcpu_tb_exec_cb(tb, tb_exec_after_reset,
@@ -40,7 +40,7 @@ static void after_reset(void *userdata)
40
g_assert(!was_reset && !was_uninstalled);
41
qemu_plugin_outs("reset done\n");
42
was_reset = true;
43
- qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_after_reset);
43
+ qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_after_reset, NULL);
44
}
45
46
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)
49
qemu_plugin_reset(plugin_id, after_reset, (void *) plugin_id);
50
}
51
52
-static void tb_trans_before_reset(struct qemu_plugin_tb *tb)
52
+static void tb_trans_before_reset(struct qemu_plugin_tb *tb, void *userdata)
53
{
54
g_assert(!was_reset && !was_uninstalled);
55
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,
61
int argc, char **argv)
62
{
63
plugin_id = id;
64
- qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_before_reset);
64
+ qemu_plugin_register_vcpu_tb_trans_cb(id, tb_trans_before_reset, NULL);
65
return 0;
66
}
67
tests/tcg/plugins/setpc.c
+2
-2
@@ -73,7 +73,7 @@ static void vcpu_mem_access(unsigned int vcpu_index,
73
}
74
}
75
76
-static void vcpu_tb_trans(struct qemu_plugin_tb *tb)
76
+static void vcpu_tb_trans(struct qemu_plugin_tb *tb, void *userdata)
77
{
78
size_t insns = qemu_plugin_tb_n_insns(tb);
79
for (size_t i = 0; i < insns; i++) {
@@ -100,6 +100,6 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
100
{
101
102
qemu_plugin_register_vcpu_syscall_filter_cb(id, vcpu_syscall_filter);
103
- qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans);
103
+ qemu_plugin_register_vcpu_tb_trans_cb(id, vcpu_tb_trans, NULL);
104
return 0;
105
}