|
@@ -52,7 +52,11 @@ typedef uint64_t qemu_plugin_id_t;
|
|
|
* The plugins export the API they were built against by exposing the
|
|
|
* symbol qemu_plugin_version which can be checked.
|
|
|
*
|
|
|
- * version 2: removed qemu_plugin_n_vcpus and qemu_plugin_n_max_vcpus
|
|
|
+ * version 2:
|
|
|
+ * - removed qemu_plugin_n_vcpus and qemu_plugin_n_max_vcpus
|
|
|
+ * - Remove qemu_plugin_register_vcpu_{tb, insn, mem}_exec_inline.
|
|
|
+ * Those functions are replaced by *_per_vcpu variants, which guarantee
|
|
|
+ * thread-safety for operations.
|
|
|
*/
|
|
|
|
|
|
extern QEMU_PLUGIN_EXPORT int qemu_plugin_version;
|
|
@@ -309,25 +313,6 @@ enum qemu_plugin_op {
|
|
|
QEMU_PLUGIN_INLINE_ADD_U64,
|
|
|
};
|
|
|
|
|
|
-/**
|
|
|
- * qemu_plugin_register_vcpu_tb_exec_inline() - execution inline op
|
|
|
- * @tb: the opaque qemu_plugin_tb handle for the translation
|
|
|
- * @op: the type of qemu_plugin_op (e.g. ADD_U64)
|
|
|
- * @ptr: the target memory location for the op
|
|
|
- * @imm: the op data (e.g. 1)
|
|
|
- *
|
|
|
- * Insert an inline op to every time a translated unit executes.
|
|
|
- * Useful if you just want to increment a single counter somewhere in
|
|
|
- * memory.
|
|
|
- *
|
|
|
- * Note: ops are not atomic so in multi-threaded/multi-smp situations
|
|
|
- * you will get inexact results.
|
|
|
- */
|
|
|
-QEMU_PLUGIN_API
|
|
|
-void qemu_plugin_register_vcpu_tb_exec_inline(struct qemu_plugin_tb *tb,
|
|
|
- enum qemu_plugin_op op,
|
|
|
- void *ptr, uint64_t imm);
|
|
|
-
|
|
|
/**
|
|
|
* qemu_plugin_register_vcpu_tb_exec_inline_per_vcpu() - execution inline op
|
|
|
* @tb: the opaque qemu_plugin_tb handle for the translation
|
|
@@ -359,21 +344,6 @@ void qemu_plugin_register_vcpu_insn_exec_cb(struct qemu_plugin_insn *insn,
|
|
|
enum qemu_plugin_cb_flags flags,
|
|
|
void *userdata);
|
|
|
|
|
|
-/**
|
|
|
- * qemu_plugin_register_vcpu_insn_exec_inline() - insn execution inline op
|
|
|
- * @insn: the opaque qemu_plugin_insn handle for an instruction
|
|
|
- * @op: the type of qemu_plugin_op (e.g. ADD_U64)
|
|
|
- * @ptr: the target memory location for the op
|
|
|
- * @imm: the op data (e.g. 1)
|
|
|
- *
|
|
|
- * Insert an inline op to every time an instruction executes. Useful
|
|
|
- * if you just want to increment a single counter somewhere in memory.
|
|
|
- */
|
|
|
-QEMU_PLUGIN_API
|
|
|
-void qemu_plugin_register_vcpu_insn_exec_inline(struct qemu_plugin_insn *insn,
|
|
|
- enum qemu_plugin_op op,
|
|
|
- void *ptr, uint64_t imm);
|
|
|
-
|
|
|
/**
|
|
|
* qemu_plugin_register_vcpu_insn_exec_inline_per_vcpu() - insn exec inline op
|
|
|
* @insn: the opaque qemu_plugin_insn handle for an instruction
|
|
@@ -597,24 +567,6 @@ void qemu_plugin_register_vcpu_mem_cb(struct qemu_plugin_insn *insn,
|
|
|
enum qemu_plugin_mem_rw rw,
|
|
|
void *userdata);
|
|
|
|
|
|
-/**
|
|
|
- * qemu_plugin_register_vcpu_mem_inline() - register an inline op to any memory access
|
|
|
- * @insn: handle for instruction to instrument
|
|
|
- * @rw: apply to reads, writes or both
|
|
|
- * @op: the op, of type qemu_plugin_op
|
|
|
- * @ptr: pointer memory for the op
|
|
|
- * @imm: immediate data for @op
|
|
|
- *
|
|
|
- * This registers a inline op every memory access generated by the
|
|
|
- * instruction. This provides for a lightweight but not thread-safe
|
|
|
- * way of counting the number of operations done.
|
|
|
- */
|
|
|
-QEMU_PLUGIN_API
|
|
|
-void qemu_plugin_register_vcpu_mem_inline(struct qemu_plugin_insn *insn,
|
|
|
- enum qemu_plugin_mem_rw rw,
|
|
|
- enum qemu_plugin_op op, void *ptr,
|
|
|
- uint64_t imm);
|
|
|
-
|
|
|
/**
|
|
|
* qemu_plugin_register_vcpu_mem_inline_per_vcpu() - inline op for mem access
|
|
|
* @insn: handle for instruction to instrument
|