qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "demin.han" <demin.han@starfivetech.com>, qemu-devel@nongnu.org
Cc: alex.bennee@linaro.org, erdnaxe@crans.org, ma.mandourr@gmail.com
Subject: Re: [PATCH] plugins: add plugin API to get args passed to binary
Date: Fri, 1 Nov 2024 11:18:20 -0700	[thread overview]
Message-ID: <497a69fe-e792-45c6-a629-f4872d86322a@linaro.org> (raw)
In-Reply-To: <20241101090032.1413255-1-demin.han@starfivetech.com>

Hi Demin,

thanks for your contribution.

On 11/1/24 02:00, demin.han wrote:
> Why we need args?
> When plugin outputs log files, only binary path can't distinguish multiple
> runs if the binary passed with different args.
> This is bad for CI using plugin.
>

Can it be solved simply by encoding this in name of log file from the CI 
run script?
$ cmd="/usr/bin/echo Hello world"
$ out_file="$(echo "$cmd" | sed -e 's/\s/_/').log"
$ qemu -plugin... -d plugin -D "$out_file" $cmd

I can see some good points to add this new API, but for the use case 
presented in commit message, I'm not sure to see what it solves.

> Signed-off-by: demin.han <demin.han@starfivetech.com>
> ---
>   include/qemu/qemu-plugin.h   | 11 +++++++++++
>   plugins/api.c                | 16 ++++++++++++++++
>   plugins/qemu-plugins.symbols |  1 +
>   3 files changed, 28 insertions(+)
> 
> diff --git a/include/qemu/qemu-plugin.h b/include/qemu/qemu-plugin.h
> index 622c9a0232..daf75c9f5a 100644
> --- a/include/qemu/qemu-plugin.h
> +++ b/include/qemu/qemu-plugin.h
> @@ -837,6 +837,17 @@ bool qemu_plugin_bool_parse(const char *name, const char *val, bool *ret);
>   QEMU_PLUGIN_API
>   const char *qemu_plugin_path_to_binary(void);
>   
> +/**
> + * qemu_plugin_argv_to_binary() - argv to binary file being executed
> + *
> + * Return a string array representing the argv to the binary. For user-mode
> + * this is the main executable's argv. For system emulation we currently
> + * return NULL. The user should g_free() the string array once no longer
> + * needed.
> + */
> +QEMU_PLUGIN_API
> +const char **qemu_plugin_argv_to_binary(void);
> +
>   /**
>    * qemu_plugin_start_code() - returns start of text segment
>    *
> diff --git a/plugins/api.c b/plugins/api.c
> index 24ea64e2de..fa2735db03 100644
> --- a/plugins/api.c
> +++ b/plugins/api.c
> @@ -485,6 +485,22 @@ const char *qemu_plugin_path_to_binary(void)
>       return path;
>   }
>   
> +const char **qemu_plugin_argv_to_binary(void)
> +{
> +    const char **argv = NULL;
> +#ifdef CONFIG_USER_ONLY
> +    int i, argc;
> +    TaskState *ts = get_task_state(current_cpu);
> +    argc = ts->bprm->argc;
> +    argv = g_malloc(sizeof(char *) * (argc + 1));
> +    for (i = 0; i < argc; ++i) {
> +        argv[i] = g_strdup(ts->bprm->argv[i]);
> +    }
> +    argv[argc] = NULL;
> +#endif
> +    return argv;
> +}
> +
>   uint64_t qemu_plugin_start_code(void)
>   {
>       uint64_t start = 0;
> diff --git a/plugins/qemu-plugins.symbols b/plugins/qemu-plugins.symbols
> index 032661f9ea..532582effe 100644
> --- a/plugins/qemu-plugins.symbols
> +++ b/plugins/qemu-plugins.symbols
> @@ -1,4 +1,5 @@
>   {
> +  qemu_plugin_argv_to_binary;
>     qemu_plugin_bool_parse;
>     qemu_plugin_end_code;
>     qemu_plugin_entry_code;

Regards,
Pierrick


  reply	other threads:[~2024-11-01 18:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-01  9:00 [PATCH] plugins: add plugin API to get args passed to binary demin.han
2024-11-01 18:18 ` Pierrick Bouvier [this message]
2025-01-09 11:58 ` Alex Bennée
2025-01-10  1:24   ` Demin Han
  -- strict thread matches above, loose matches on Subject: below --
2024-11-02  5:10 Demin Han
2024-11-04 21:21 ` Pierrick Bouvier
2024-11-05  2:29   ` Demin Han
2024-11-05  2:49     ` Pierrick Bouvier
2024-11-05  3:31       ` Demin Han
2024-11-05  3:44         ` Pierrick Bouvier
2024-11-05  3:53           ` Demin Han
2024-11-05  4:28             ` Pierrick Bouvier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=497a69fe-e792-45c6-a629-f4872d86322a@linaro.org \
    --to=pierrick.bouvier@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=demin.han@starfivetech.com \
    --cc=erdnaxe@crans.org \
    --cc=ma.mandourr@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).