diff options
| author | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-09 09:43:57 +0000 |
|---|---|---|
| committer | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-09 09:43:57 +0000 |
| commit | a54db0de392782ff4ea5c4b2a9135a1549c8f52f (patch) | |
| tree | 9b9b7170db5023e58d77e9da2d181448a4adf849 | |
| parent | f3cc94506f7e7d23cbe5f53548df7265a2f6effb (diff) | |
| download | focaccia-qemu-a54db0de392782ff4ea5c4b2a9135a1549c8f52f.tar.gz focaccia-qemu-a54db0de392782ff4ea5c4b2a9135a1549c8f52f.zip | |
Update Focaccia plugin to execute every time that a translation executes
| -rw-r--r-- | contrib/plugins/focaccia.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/contrib/plugins/focaccia.c b/contrib/plugins/focaccia.c index 87ce38d431..46af9dd406 100644 --- a/contrib/plugins/focaccia.c +++ b/contrib/plugins/focaccia.c @@ -11,12 +11,18 @@ static void plugin_exit(qemu_plugin_id_t id, void* p) { printf("Plugin has completed!\n"); } +static void concolic_trace(unsigned int cpu_index, void *udata) { + printf("Translation executed on CPU %u\n", cpu_index); +} + +static void register_tracer(qemu_plugin_id_t id, struct qemu_plugin_tb *tb) { + qemu_plugin_register_vcpu_tb_exec_cb(tb, concolic_trace, + QEMU_PLUGIN_CB_R_REGS, NULL); +} + // argc and argv correspond to the arguments passed via -plugin focaccia.so,arg1=<arg1>,arg2=<arg2> -QEMU_PLUGIN_EXPORT -int qemu_plugin_install(qemu_plugin_id_t id, - const qemu_info_t *info, - int argc, char **argv) -{ +QEMU_PLUGIN_EXPORT +int qemu_plugin_install(qemu_plugin_id_t id, const qemu_info_t *info, int argc, char **argv) { int i; // Process plugin arguments @@ -27,6 +33,7 @@ int qemu_plugin_install(qemu_plugin_id_t id, plugin_init(); + qemu_plugin_register_vcpu_tb_trans_cb(id, register_tracer); qemu_plugin_register_atexit_cb(id, plugin_exit, NULL); return 0; } |