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" <qemu-devel@nongnu.org>
Cc: "alex.bennee@linaro.org" <alex.bennee@linaro.org>,
	"erdnaxe@crans.org" <erdnaxe@crans.org>,
	"ma.mandourr@gmail.com" <ma.mandourr@gmail.com>
Subject: Re: [PATCH] plugins: add plugin API to get args passed to binary
Date: Mon, 4 Nov 2024 13:21:41 -0800	[thread overview]
Message-ID: <ec546d66-0ecb-4294-b8c6-a7f2c2a6e534@linaro.org> (raw)
In-Reply-To: <ZQZPR01MB1057EB3713C55BC9F53ADE5785572@ZQZPR01MB1057.CHNPR01.prod.partner.outlook.cn>

On 11/1/24 22:10, Demin Han wrote:
> Hi,
> 
> Many benchmarks have their own build and run system, such as specint, we 
> don’t want to change their code.
>

I don't think those benchmarks (such as specint) integrate calling qemu 
with a specific plugin on command line, so I guess you have a wrapper or 
something where you could pass necessary information, or tweak output 
file, without changing the benchmark itself. In case I'm wrong, feel 
free to correct me.

> Actually the log maybe structural data such as in json format and may be 
> output multiple log files with different statistics dimention for one run.
> 
> -D can’t satisfy this.

Indeed, it can output only a single file. If your plugin needs something 
more advanced, you can try to output something yourself. However, a 
better and simpler way would be to prefix lines output with a specific 
marker, and post process your plugin trace with a custom script.

Adding command line access to plugins does not solve any of those problems.

I see value in what this series offer, but I don't see how it's related 
to the current need you express.

Regards,
Pierrick

> 
> Regard,
> Denin
> 
> 获取 Outlook for iOS <https://aka.ms/o0ukef>
> ------------------------------------------------------------------------
> *发件人:* Pierrick Bouvier <pierrick.bouvier@linaro.org>
> *发送时间:* Saturday, November 2, 2024 2:18:20 AM
> *收件人:* Demin Han <demin.han@starfivetech.com>; qemu-devel@nongnu.org 
> <qemu-devel@nongnu.org>
> *抄送:* alex.bennee@linaro.org <alex.bennee@linaro.org>; 
> erdnaxe@crans.org <erdnaxe@crans.org>; ma.mandourr@gmail.com 
> <ma.mandourr@gmail.com>
> *主题:* Re: [PATCH] plugins: add plugin API to get args passed to binary
> 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-04 21:22 UTC|newest]

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

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=ec546d66-0ecb-4294-b8c6-a7f2c2a6e534@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).