[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/3] plugin: extend API with qemu_plugin_tb_get_insn_by_vaddr
From: |
Luke Craig |
Subject: |
[PATCH v3 1/3] plugin: extend API with qemu_plugin_tb_get_insn_by_vaddr |
Date: |
Fri, 31 Jan 2025 16:07:22 -0500 |
Signed-off-by: Luke Craig <lacraig3@gmail.com>
---
include/qemu/qemu-plugin.h | 11 +++++++++++
plugins/api.c | 13 +++++++++++++
2 files changed, 24 insertions(+)
diff --git a/include/qemu/qemu-plugin.h b/include/qemu/qemu-plugin.h
index 3a850aa216..a1c478c54f 100644
--- a/include/qemu/qemu-plugin.h
+++ b/include/qemu/qemu-plugin.h
@@ -500,6 +500,17 @@ QEMU_PLUGIN_API
struct qemu_plugin_insn *
qemu_plugin_tb_get_insn(const struct qemu_plugin_tb *tb, size_t idx);
+/**
+ * qemu_plugin_tb_get_insn_by_vaddr() - lookup handle for instruction by vaddr
+ * @tb: opaque handle to TB passed to callback
+ * @vaddr: virtual address of instruction
+ *
+ * Returns: opaque handle to instruction
+ */
+QEMU_PLUGIN_API
+struct qemu_plugin_insn *
+qemu_plugin_tb_get_insn_by_vaddr(const struct qemu_plugin_tb *tb, uint64_t
vaddr);
+
/**
* qemu_plugin_insn_data() - copy instruction data
* @insn: opaque instruction handle from qemu_plugin_tb_get_insn()
diff --git a/plugins/api.c b/plugins/api.c
index 4110cfaa23..a6bd912c56 100644
--- a/plugins/api.c
+++ b/plugins/api.c
@@ -258,6 +258,19 @@ qemu_plugin_tb_get_insn(const struct qemu_plugin_tb *tb,
size_t idx)
return insn;
}
+struct qemu_plugin_insn *
+qemu_plugin_tb_get_insn_by_vaddr(const struct qemu_plugin_tb *tb, uint64_t
vaddr)
+{
+ struct qemu_plugin_insn *insn;
+ for (size_t i = 0; i < tb->n; i++){
+ insn = g_ptr_array_index(tb->insns, i);
+ if (insn != NULL && insn->vaddr == vaddr){
+ return insn;
+ }
+ }
+ return NULL;
+}
+
/*
* Instruction information
*
--
2.34.1