|
@@ -262,6 +262,29 @@ enum qemu_plugin_mem_rw {
|
|
|
QEMU_PLUGIN_MEM_RW,
|
|
|
};
|
|
|
|
|
|
+enum qemu_plugin_mem_value_type {
|
|
|
+ QEMU_PLUGIN_MEM_VALUE_U8,
|
|
|
+ QEMU_PLUGIN_MEM_VALUE_U16,
|
|
|
+ QEMU_PLUGIN_MEM_VALUE_U32,
|
|
|
+ QEMU_PLUGIN_MEM_VALUE_U64,
|
|
|
+ QEMU_PLUGIN_MEM_VALUE_U128,
|
|
|
+};
|
|
|
+
|
|
|
+/* typedef qemu_plugin_mem_value - value accessed during a load/store */
|
|
|
+typedef struct {
|
|
|
+ enum qemu_plugin_mem_value_type type;
|
|
|
+ union {
|
|
|
+ uint8_t u8;
|
|
|
+ uint16_t u16;
|
|
|
+ uint32_t u32;
|
|
|
+ uint64_t u64;
|
|
|
+ struct {
|
|
|
+ uint64_t low;
|
|
|
+ uint64_t high;
|
|
|
+ } u128;
|
|
|
+ } data;
|
|
|
+} qemu_plugin_mem_value;
|
|
|
+
|
|
|
/**
|
|
|
* enum qemu_plugin_cond - condition to enable callback
|
|
|
*
|
|
@@ -551,6 +574,15 @@ bool qemu_plugin_mem_is_big_endian(qemu_plugin_meminfo_t info);
|
|
|
QEMU_PLUGIN_API
|
|
|
bool qemu_plugin_mem_is_store(qemu_plugin_meminfo_t info);
|
|
|
|
|
|
+/**
|
|
|
+ * qemu_plugin_mem_get_mem_value() - return last value loaded/stored
|
|
|
+ * @info: opaque memory transaction handle
|
|
|
+ *
|
|
|
+ * Returns: memory value
|
|
|
+ */
|
|
|
+QEMU_PLUGIN_API
|
|
|
+qemu_plugin_mem_value qemu_plugin_mem_get_value(qemu_plugin_meminfo_t info);
|
|
|
+
|
|
|
/**
|
|
|
* qemu_plugin_get_hwaddr() - return handle for memory operation
|
|
|
* @info: opaque memory info structure
|