Re: [PATCH 22/25] plugins: add userdata to qemu_plugin_register_vcpu_syscall_ret_cb

2026-06-10 Thread Manos Pitsidianakis

On Wed, 03 Jun 2026 23:51, Pierrick Bouvier  
wrote:

Signed-off-by: Pierrick Bouvier 
---


Reviewed-by: Manos Pitsidianakis 


include/plugins/qemu-plugin.h | 8 ++--
plugins/api.c | 5 +++--
plugins/core.c| 2 +-
tests/tcg/plugins/syscall.c   | 5 +++--
4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h
index 4f0c73c7b33..50a39e51d46 100644
--- a/include/plugins/qemu-plugin.h
+++ b/include/plugins/qemu-plugin.h
@@ -882,10 +882,12 @@ typedef bool
 * @vcpu_index: the executing vCPU
 * @num: the syscall number
 * @ret: the syscall return value
+ * @userdata: user data for callback
 */
typedef void
(*qemu_plugin_vcpu_syscall_ret_cb_t)(unsigned int vcpu_index,
- int64_t num, int64_t ret);
+ int64_t num, int64_t ret,
+ void *userdata);

/**
 * qemu_plugin_register_vcpu_syscall_cb() - register a syscall entry callback
@@ -925,6 +927,7 @@ 
qemu_plugin_register_vcpu_syscall_filter_cb(qemu_plugin_id_t id,
 * callback
 * @id: plugin id
 * @cb: callback of type qemu_plugin_vcpu_syscall_ret_cb_t
+ * @userdata: user data for callback
 *
 * This registers a callback for every syscall executed by the guest. The @cb
 * function is executed upon return from the host syscall before execution is
@@ -933,7 +936,8 @@ 
qemu_plugin_register_vcpu_syscall_filter_cb(qemu_plugin_id_t id,
QEMU_PLUGIN_API
void
qemu_plugin_register_vcpu_syscall_ret_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_syscall_ret_cb_t cb);
+ qemu_plugin_vcpu_syscall_ret_cb_t cb,
+ void *userdata);

/**
 * qemu_plugin_insn_disas() - return disassembly string for instruction
diff --git a/plugins/api.c b/plugins/api.c
index f2176be5304..0038da6d706 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -210,9 +210,10 @@ void qemu_plugin_register_vcpu_syscall_cb(qemu_plugin_id_t 
id,

void
qemu_plugin_register_vcpu_syscall_ret_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_syscall_ret_cb_t cb)
+ qemu_plugin_vcpu_syscall_ret_cb_t cb,
+ void *userdata)
{
-plugin_register_cb(id, QEMU_PLUGIN_EV_VCPU_SYSCALL_RET, cb);
+plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_SYSCALL_RET, cb, 
userdata);
}

void
diff --git a/plugins/core.c b/plugins/core.c
index 887267f8174..7a58fb537c9 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -557,7 +557,7 @@ void qemu_plugin_vcpu_syscall_ret(CPUState *cpu, int64_t 
num, int64_t ret)
qemu_plugin_vcpu_syscall_ret_cb_t func = cb->f.vcpu_syscall_ret;

qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC);
-func(cpu->cpu_index, num, ret);
+func(cpu->cpu_index, num, ret, cb->udata);
qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
}
}
diff --git a/tests/tcg/plugins/syscall.c b/tests/tcg/plugins/syscall.c
index 1bc737824ce..a28d1087840 100644
--- a/tests/tcg/plugins/syscall.c
+++ b/tests/tcg/plugins/syscall.c
@@ -152,7 +152,8 @@ static void vcpu_syscall(unsigned int vcpu_index,
}

static void vcpu_syscall_ret(unsigned int vcpu_idx,
- int64_t num, int64_t ret)
+ int64_t num, int64_t ret,
+ void *userdata)
{
if (statistics) {
SyscallStats *entry;
@@ -273,7 +274,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t 
id,
}

qemu_plugin_register_vcpu_syscall_cb(id, vcpu_syscall, NULL);
-qemu_plugin_register_vcpu_syscall_ret_cb(id, vcpu_syscall_ret);
+qemu_plugin_register_vcpu_syscall_ret_cb(id, vcpu_syscall_ret, NULL);
qemu_plugin_register_vcpu_syscall_filter_cb(id, vcpu_syscall_filter, NULL);
qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
return 0;
--
2.43.0






[PATCH 22/25] plugins: add userdata to qemu_plugin_register_vcpu_syscall_ret_cb

2026-06-03 Thread Pierrick Bouvier
Signed-off-by: Pierrick Bouvier 
---
 include/plugins/qemu-plugin.h | 8 ++--
 plugins/api.c | 5 +++--
 plugins/core.c| 2 +-
 tests/tcg/plugins/syscall.c   | 5 +++--
 4 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/include/plugins/qemu-plugin.h b/include/plugins/qemu-plugin.h
index 4f0c73c7b33..50a39e51d46 100644
--- a/include/plugins/qemu-plugin.h
+++ b/include/plugins/qemu-plugin.h
@@ -882,10 +882,12 @@ typedef bool
  * @vcpu_index: the executing vCPU
  * @num: the syscall number
  * @ret: the syscall return value
+ * @userdata: user data for callback
  */
 typedef void
 (*qemu_plugin_vcpu_syscall_ret_cb_t)(unsigned int vcpu_index,
- int64_t num, int64_t ret);
+ int64_t num, int64_t ret,
+ void *userdata);
 
 /**
  * qemu_plugin_register_vcpu_syscall_cb() - register a syscall entry callback
@@ -925,6 +927,7 @@ 
qemu_plugin_register_vcpu_syscall_filter_cb(qemu_plugin_id_t id,
  * callback
  * @id: plugin id
  * @cb: callback of type qemu_plugin_vcpu_syscall_ret_cb_t
+ * @userdata: user data for callback
  *
  * This registers a callback for every syscall executed by the guest. The @cb
  * function is executed upon return from the host syscall before execution is
@@ -933,7 +936,8 @@ 
qemu_plugin_register_vcpu_syscall_filter_cb(qemu_plugin_id_t id,
 QEMU_PLUGIN_API
 void
 qemu_plugin_register_vcpu_syscall_ret_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_syscall_ret_cb_t cb);
+ qemu_plugin_vcpu_syscall_ret_cb_t cb,
+ void *userdata);
 
 /**
  * qemu_plugin_insn_disas() - return disassembly string for instruction
diff --git a/plugins/api.c b/plugins/api.c
index f2176be5304..0038da6d706 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -210,9 +210,10 @@ void qemu_plugin_register_vcpu_syscall_cb(qemu_plugin_id_t 
id,
 
 void
 qemu_plugin_register_vcpu_syscall_ret_cb(qemu_plugin_id_t id,
- qemu_plugin_vcpu_syscall_ret_cb_t cb)
+ qemu_plugin_vcpu_syscall_ret_cb_t cb,
+ void *userdata)
 {
-plugin_register_cb(id, QEMU_PLUGIN_EV_VCPU_SYSCALL_RET, cb);
+plugin_register_cb_udata(id, QEMU_PLUGIN_EV_VCPU_SYSCALL_RET, cb, 
userdata);
 }
 
 void
diff --git a/plugins/core.c b/plugins/core.c
index 887267f8174..7a58fb537c9 100644
--- a/plugins/core.c
+++ b/plugins/core.c
@@ -557,7 +557,7 @@ void qemu_plugin_vcpu_syscall_ret(CPUState *cpu, int64_t 
num, int64_t ret)
 qemu_plugin_vcpu_syscall_ret_cb_t func = cb->f.vcpu_syscall_ret;
 
 qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_RW_REGS_PC);
-func(cpu->cpu_index, num, ret);
+func(cpu->cpu_index, num, ret, cb->udata);
 qemu_plugin_set_cb_flags(cpu, QEMU_PLUGIN_CB_NO_REGS);
 }
 }
diff --git a/tests/tcg/plugins/syscall.c b/tests/tcg/plugins/syscall.c
index 1bc737824ce..a28d1087840 100644
--- a/tests/tcg/plugins/syscall.c
+++ b/tests/tcg/plugins/syscall.c
@@ -152,7 +152,8 @@ static void vcpu_syscall(unsigned int vcpu_index,
 }
 
 static void vcpu_syscall_ret(unsigned int vcpu_idx,
- int64_t num, int64_t ret)
+ int64_t num, int64_t ret,
+ void *userdata)
 {
 if (statistics) {
 SyscallStats *entry;
@@ -273,7 +274,7 @@ QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t 
id,
 }
 
 qemu_plugin_register_vcpu_syscall_cb(id, vcpu_syscall, NULL);
-qemu_plugin_register_vcpu_syscall_ret_cb(id, vcpu_syscall_ret);
+qemu_plugin_register_vcpu_syscall_ret_cb(id, vcpu_syscall_ret, NULL);
 qemu_plugin_register_vcpu_syscall_filter_cb(id, vcpu_syscall_filter, NULL);
 qemu_plugin_register_atexit_cb(id, plugin_exit, NULL);
 return 0;
-- 
2.43.0