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
next prev parent 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).