[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v2 3/7] plugins: provide helper functions for pl
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v2 3/7] plugins: provide helper functions for plugins |
Date: |
Tue, 05 Jun 2018 13:39:32 +0300 |
User-agent: |
StGit/0.17.1-dirty |
From: Pavel Dovgalyuk <address@hidden>
This patch adds interface functions that may be called from the loaded plugins.
Such functions are needed to inspect the VM state and to pass data
to the QEMU (e.g., QEMU-side logging).
Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
Makefile.target | 2 +-
plugins/include/plugins.h | 6 ++++++
plugins/qemulib.c | 31 +++++++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 1 deletion(-)
create mode 100644 plugins/qemulib.c
diff --git a/Makefile.target b/Makefile.target
index 4cffd96..5648c9c 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -93,7 +93,7 @@ all: $(PROGS) stap
# cpu emulator library
obj-y += exec.o
obj-y += accel/
-obj-$(CONFIG_PLUGINS) += plugins/plugins.o
+obj-$(CONFIG_PLUGINS) += plugins/plugins.o plugins/qemulib.o
obj-$(CONFIG_TCG) += tcg/tcg.o tcg/tcg-op.o tcg/tcg-op-vec.o tcg/tcg-op-gvec.o
obj-$(CONFIG_TCG) += tcg/tcg-common.o tcg/optimize.o
obj-$(CONFIG_TCG_INTERPRETER) += tcg/tci.o
diff --git a/plugins/include/plugins.h b/plugins/include/plugins.h
index 100a786..fa624ea 100644
--- a/plugins/include/plugins.h
+++ b/plugins/include/plugins.h
@@ -9,4 +9,10 @@ bool plugin_init(const char *args);
bool plugin_needs_before_insn(uint64_t pc, void *cpu);
void plugin_before_insn(uint64_t pc, void *cpu);
+/* QEMU interface */
+
+void qemulib_log(const char *fmt, ...) /*GCC_FMT_ATTR(1, 2)*/;
+int qemulib_read_memory(void *cpu, uint64_t addr, uint8_t *buf, int len);
+int qemulib_read_register(void *cpu, uint8_t *mem_buf, int reg);
+
#endif /* PLUGINS_INTERFACE_H */
diff --git a/plugins/qemulib.c b/plugins/qemulib.c
new file mode 100644
index 0000000..eb812c1
--- /dev/null
+++ b/plugins/qemulib.c
@@ -0,0 +1,31 @@
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "cpu.h"
+#include "qemu/error-report.h"
+#include "qemu/plugins.h"
+#include "qemu/log.h"
+#include "include/plugins.h"
+
+void qemulib_log(const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ qemu_log_vprintf(fmt, args);
+ va_end(args);
+}
+
+int qemulib_read_memory(void *cpu, uint64_t addr, uint8_t *buf, int len)
+{
+ return cpu_memory_rw_debug(cpu, addr, buf, len, false);
+}
+
+int qemulib_read_register(void *cpu, uint8_t *mem_buf, int reg)
+{
+ CPUClass *cc = CPU_GET_CLASS(cpu);
+
+ if (reg < cc->gdb_num_core_regs) {
+ return cc->gdb_read_register(cpu, mem_buf, reg);
+ }
+
+ return 0;
+}
- [Qemu-devel] [RFC PATCH v2 0/7] QEMU binary instrumentation prototype, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 1/7] tcg: add headers for non-target helpers, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 2/7] Add plugin support, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 3/7] plugins: provide helper functions for plugins,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v2 4/7] tcg: add instrumenting module, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 5/7] plugins: add plugin template, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 6/7] plugin: add instruction execution logger, Pavel Dovgalyuk, 2018/06/05
- [Qemu-devel] [RFC PATCH v2 7/7] plugins: add syscall logging plugin sample, Pavel Dovgalyuk, 2018/06/05
- Re: [Qemu-devel] [RFC PATCH v2 0/7] QEMU binary instrumentation prototype, Peter Maydell, 2018/06/05
- Re: [Qemu-devel] [RFC PATCH v2 0/7] QEMU binary instrumentation prototype, no-reply, 2018/06/06
- Re: [Qemu-devel] [RFC PATCH v2 0/7] QEMU binary instrumentation prototype, no-reply, 2018/06/06