[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] plugins: Move all typedef and type declaration to the fr
From: |
Alex Bennée |
Subject: |
Re: [PATCH 2/2] plugins: Move all typedef and type declaration to the front of the qemu-plugin.h |
Date: |
Mon, 26 Apr 2021 17:28:15 +0100 |
User-agent: |
mu4e 1.5.12; emacs 28.0.50 |
Yonggang Luo <luoyonggang@gmail.com> writes:
What's the rationale for moving everything around in the file. As it
currently stands the typedefs are create as we get to each new set of
helpers/plugin points. Doing it all up front seems like a lot of churn
for not particular reason.
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> ---
> include/qemu/qemu-plugin.h | 187 ++++++++++++++++++-------------------
> 1 file changed, 92 insertions(+), 95 deletions(-)
>
> diff --git a/include/qemu/qemu-plugin.h b/include/qemu/qemu-plugin.h
> index 97cdfd7761..2cb17f3051 100644
> --- a/include/qemu/qemu-plugin.h
> +++ b/include/qemu/qemu-plugin.h
> @@ -81,27 +81,6 @@ typedef struct qemu_info_t {
> };
> } qemu_info_t;
>
> -/**
> - * qemu_plugin_install() - Install a plugin
> - * @id: this plugin's opaque ID
> - * @info: a block describing some details about the guest
> - * @argc: number of arguments
> - * @argv: array of arguments (@argc elements)
> - *
> - * All plugins must export this symbol which is called when the plugin
> - * is first loaded. Calling qemu_plugin_uninstall() from this function
> - * is a bug.
> - *
> - * Note: @info is only live during the call. Copy any information we
> - * want to keep. @argv remains valid throughout the lifetime of the
> - * loaded plugin.
> - *
> - * Return: 0 on successful loading, !0 for an error.
> - */
> -QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> - const qemu_info_t *info,
> - int argc, char **argv);
> -
> /**
> * typedef qemu_plugin_simple_cb_t - simple callback
> * @id: the unique qemu_plugin_id_t
> @@ -135,6 +114,98 @@ typedef void
> (*qemu_plugin_vcpu_simple_cb_t)(qemu_plugin_id_t id,
> typedef void (*qemu_plugin_vcpu_udata_cb_t)(unsigned int vcpu_index,
> void *userdata);
>
> +/** struct qemu_plugin_tb - Opaque handle for a translation block */
> +struct qemu_plugin_tb;
> +/** struct qemu_plugin_insn - Opaque handle for a translated instruction */
> +struct qemu_plugin_insn;
> +
> +/**
> + * enum qemu_plugin_cb_flags - type of callback
> + *
> + * @QEMU_PLUGIN_CB_NO_REGS: callback does not access the CPU's regs
> + * @QEMU_PLUGIN_CB_R_REGS: callback reads the CPU's regs
> + * @QEMU_PLUGIN_CB_RW_REGS: callback reads and writes the CPU's regs
> + *
> + * Note: currently unused, plugins cannot read or change system
> + * register state.
> + */
> +enum qemu_plugin_cb_flags {
> + QEMU_PLUGIN_CB_NO_REGS,
> + QEMU_PLUGIN_CB_R_REGS,
> + QEMU_PLUGIN_CB_RW_REGS,
> +};
> +
> +enum qemu_plugin_mem_rw {
> + QEMU_PLUGIN_MEM_R = 1,
> + QEMU_PLUGIN_MEM_W,
> + QEMU_PLUGIN_MEM_RW,
> +};
> +
> +/**
> + * typedef qemu_plugin_vcpu_tb_trans_cb_t - translation callback
> + * @id: unique plugin id
> + * @tb: opaque handle used for querying and instrumenting a block.
> + */
> +typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(qemu_plugin_id_t id,
> + struct qemu_plugin_tb *tb);
> +
> +/**
> + * enum qemu_plugin_op - describes an inline op
> + *
> + * @QEMU_PLUGIN_INLINE_ADD_U64: add an immediate value uint64_t
> + *
> + * Note: currently only a single inline op is supported.
> + */
> +
> +enum qemu_plugin_op {
> + QEMU_PLUGIN_INLINE_ADD_U64,
> +};
> +
> +/**
> + * typedef qemu_plugin_meminfo_t - opaque memory transaction handle
> + *
> + * This can be further queried using the qemu_plugin_mem_* query
> + * functions.
> + */
> +typedef uint32_t qemu_plugin_meminfo_t;
> +/** struct qemu_plugin_hwaddr - opaque hw address handle */
> +struct qemu_plugin_hwaddr;
> +
> +typedef void
> +(*qemu_plugin_vcpu_mem_cb_t)(unsigned int vcpu_index,
> + qemu_plugin_meminfo_t info, uint64_t vaddr,
> + void *userdata);
> +
> +typedef void
> +(*qemu_plugin_vcpu_syscall_cb_t)(qemu_plugin_id_t id, unsigned int
> vcpu_index,
> + int64_t num, uint64_t a1, uint64_t a2,
> + uint64_t a3, uint64_t a4, uint64_t a5,
> + uint64_t a6, uint64_t a7, uint64_t a8);
> +typedef void
> +(*qemu_plugin_vcpu_syscall_ret_cb_t)(qemu_plugin_id_t id, unsigned int
> vcpu_idx,
> + int64_t num, int64_t ret);
> +
> +/**
> + * qemu_plugin_install() - Install a plugin
> + * @id: this plugin's opaque ID
> + * @info: a block describing some details about the guest
> + * @argc: number of arguments
> + * @argv: array of arguments (@argc elements)
> + *
> + * All plugins must export this symbol which is called when the plugin
> + * is first loaded. Calling qemu_plugin_uninstall() from this function
> + * is a bug.
> + *
> + * Note: @info is only live during the call. Copy any information we
> + * want to keep. @argv remains valid throughout the lifetime of the
> + * loaded plugin.
> + *
> + * Return: 0 on successful loading, !0 for an error.
> + */
> +QEMU_PLUGIN_EXPORT int qemu_plugin_install(qemu_plugin_id_t id,
> + const qemu_info_t *info,
> + int argc, char **argv);
> +
> /**
> * qemu_plugin_uninstall() - Uninstall a plugin
> * @id: this plugin's opaque ID
> @@ -205,41 +276,6 @@ void qemu_plugin_register_vcpu_idle_cb(qemu_plugin_id_t
> id,
> void qemu_plugin_register_vcpu_resume_cb(qemu_plugin_id_t id,
> qemu_plugin_vcpu_simple_cb_t cb);
>
> -/** struct qemu_plugin_tb - Opaque handle for a translation block */
> -struct qemu_plugin_tb;
> -/** struct qemu_plugin_insn - Opaque handle for a translated instruction */
> -struct qemu_plugin_insn;
> -
> -/**
> - * enum qemu_plugin_cb_flags - type of callback
> - *
> - * @QEMU_PLUGIN_CB_NO_REGS: callback does not access the CPU's regs
> - * @QEMU_PLUGIN_CB_R_REGS: callback reads the CPU's regs
> - * @QEMU_PLUGIN_CB_RW_REGS: callback reads and writes the CPU's regs
> - *
> - * Note: currently unused, plugins cannot read or change system
> - * register state.
> - */
> -enum qemu_plugin_cb_flags {
> - QEMU_PLUGIN_CB_NO_REGS,
> - QEMU_PLUGIN_CB_R_REGS,
> - QEMU_PLUGIN_CB_RW_REGS,
> -};
> -
> -enum qemu_plugin_mem_rw {
> - QEMU_PLUGIN_MEM_R = 1,
> - QEMU_PLUGIN_MEM_W,
> - QEMU_PLUGIN_MEM_RW,
> -};
> -
> -/**
> - * typedef qemu_plugin_vcpu_tb_trans_cb_t - translation callback
> - * @id: unique plugin id
> - * @tb: opaque handle used for querying and instrumenting a block.
> - */
> -typedef void (*qemu_plugin_vcpu_tb_trans_cb_t)(qemu_plugin_id_t id,
> - struct qemu_plugin_tb *tb);
> -
> /**
> * qemu_plugin_register_vcpu_tb_trans_cb() - register a translate cb
> * @id: plugin ID
> @@ -269,18 +305,6 @@ void qemu_plugin_register_vcpu_tb_exec_cb(struct
> qemu_plugin_tb *tb,
> enum qemu_plugin_cb_flags flags,
> void *userdata);
>
> -/**
> - * enum qemu_plugin_op - describes an inline op
> - *
> - * @QEMU_PLUGIN_INLINE_ADD_U64: add an immediate value uint64_t
> - *
> - * Note: currently only a single inline op is supported.
> - */
> -
> -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
> @@ -393,16 +417,6 @@ uint64_t qemu_plugin_insn_vaddr(const struct
> qemu_plugin_insn *insn);
> */
> void *qemu_plugin_insn_haddr(const struct qemu_plugin_insn *insn);
>
> -/**
> - * typedef qemu_plugin_meminfo_t - opaque memory transaction handle
> - *
> - * This can be further queried using the qemu_plugin_mem_* query
> - * functions.
> - */
> -typedef uint32_t qemu_plugin_meminfo_t;
> -/** struct qemu_plugin_hwaddr - opaque hw address handle */
> -struct qemu_plugin_hwaddr;
> -
> /**
> * qemu_plugin_mem_size_shift() - get size of access
> * @info: opaque memory transaction handle
> @@ -480,11 +494,6 @@ uint64_t qemu_plugin_hwaddr_phys_addr(const struct
> qemu_plugin_hwaddr *haddr);
> */
> const char *qemu_plugin_hwaddr_device_name(const struct qemu_plugin_hwaddr
> *h);
>
> -typedef void
> -(*qemu_plugin_vcpu_mem_cb_t)(unsigned int vcpu_index,
> - qemu_plugin_meminfo_t info, uint64_t vaddr,
> - void *userdata);
> -
> void qemu_plugin_register_vcpu_mem_cb(struct qemu_plugin_insn *insn,
> qemu_plugin_vcpu_mem_cb_t cb,
> enum qemu_plugin_cb_flags flags,
> @@ -496,21 +505,9 @@ void qemu_plugin_register_vcpu_mem_inline(struct
> qemu_plugin_insn *insn,
> enum qemu_plugin_op op, void *ptr,
> uint64_t imm);
>
> -
> -
> -typedef void
> -(*qemu_plugin_vcpu_syscall_cb_t)(qemu_plugin_id_t id, unsigned int
> vcpu_index,
> - int64_t num, uint64_t a1, uint64_t a2,
> - uint64_t a3, uint64_t a4, uint64_t a5,
> - uint64_t a6, uint64_t a7, uint64_t a8);
> -
> void qemu_plugin_register_vcpu_syscall_cb(qemu_plugin_id_t id,
> qemu_plugin_vcpu_syscall_cb_t cb);
>
> -typedef void
> -(*qemu_plugin_vcpu_syscall_ret_cb_t)(qemu_plugin_id_t id, unsigned int
> vcpu_idx,
> - int64_t num, int64_t ret);
> -
> void
> qemu_plugin_register_vcpu_syscall_ret_cb(qemu_plugin_id_t id,
> qemu_plugin_vcpu_syscall_ret_cb_t
> cb);
--
Alex Bennée
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 2/2] plugins: Move all typedef and type declaration to the front of the qemu-plugin.h,
Alex Bennée <=