From: Mahmoud Mandour <ma.mandourr@gmail.com>
To: qemu-devel@nongnu.org
Cc: Mahmoud Mandour <ma.mandourr@gmail.com>,
cota@braap.org, alex.bennee@linaro.org
Subject: [PATCH v4 00/13] new plugin argument passing scheme
Date: Fri, 30 Jul 2021 15:58:04 +0200 [thread overview]
Message-ID: <20210730135817.17816-1-ma.mandourr@gmail.com> (raw)
Hello,
This series removes passing arguments to plugins through "arg=" since
it's redundant and reduces readability especially when the argument
itself is composed of a name and a value.
Also, passing arguments through "arg=" still works but is marked as
deprecated and will produce a deprecation warning.
Right now, the code for parsing the argument before passing it to the
plugin is unfortunately not so clean but that's mainly because "arg=" is
still supported.
At first, considering boolean parameters, those were not special to
plugins and QEMU did not complain about passing them in the form
"arg=bool_arg" even though that's considered a short-form boolean, which
is deprecated. As "arg" is removed, a deprecation warning is issued.
This is mitigated by making plugins aware of boolean arguments and
parses them through a newly exposed API, namely the `qapi_bool_parse`
function through a plugin API function. Now plugins expect boolean
parameters to be passed in the form that other parts of QEMU expect,
i.e. "bool_arg=[on|true|yes|off|false|no]".
Since we're still supporting "arg=arg_name", there are some assumptions
that I made that I think are suitable:
1. "arg=arg_name" will be passed to the plugin as "arg_name=on".
2. "arg=on" and "arg" will not be assumed to be the old way of
passing args. Instead, it will assume that the argument name is
"arg" and it's a boolean parameter. (will be passed to plugin
as "arg=on")
The docs are updated accordingly and a deprecation notice is put in the
deprecated.rst file.
Based-on: <20210722065428.134608-1-ma.mandourr@gmail.com>
However, the dependency is so light and it should only be in the patch
docs/tcg-plugins: new passing parameters scheme for cache docs
where it depends on
docs/devel/tcg-plugins: added cores arg to cache plugin
in the aforementioned series (conflict lies in the argument "cores=N" only.)
Patches that still need review:
plugins/api: added a boolean parsing plugin api
docs/deprecated: deprecate passing plugin args through `arg=`
plugins/hwprofile: adapt to the new plugin arguments scheme
v3 -> v4:
1. added Reviewed-by and Tested-By tags to commit messages of the
already-reviewed patches.
v2 -> v3:
1. Protected calling `qapi_bool_parse` by ensuring name & value are
not NULL.
2. Updated the docs for the hotpages plugin to include its arguments
3. Typo in tests/plugins/mem (hadrr -> haddr)
4. Reword the deprecation entry in deprecated.rst
Mahmoud Mandour (13):
plugins: allow plugin arguments to be passed directly
plugins/api: added a boolean parsing plugin api
plugins/hotpages: introduce sortby arg and parsed bool args correctly
plugins/hotblocks: Added correct boolean argument parsing
plugins/lockstep: make socket path not positional & parse bool arg
plugins/hwprofile: adapt to the new plugin arguments scheme
plugins/howvec: adapting to the new argument passing scheme
docs/tcg-plugins: new passing parameters scheme for cache docs
tests/plugins/bb: adapt to the new arg passing scheme
tests/plugins/insn: made arg inline not positional and parse it as
bool
tests/plugins/mem: introduce "track" arg and make args not positional
tests/plugins/syscalls: adhere to new arg-passing scheme
docs/deprecated: deprecate passing plugin args through `arg=`
contrib/plugins/hotblocks.c | 14 ++++++++--
contrib/plugins/hotpages.c | 30 ++++++++++++++-------
contrib/plugins/howvec.c | 27 +++++++++++++------
contrib/plugins/hwprofile.c | 39 ++++++++++++++++++---------
contrib/plugins/lockstep.c | 31 +++++++++++++++-------
docs/devel/tcg-plugins.rst | 53 ++++++++++++++++++++++++-------------
docs/system/deprecated.rst | 7 +++++
include/qemu/qemu-plugin.h | 13 +++++++++
linux-user/main.c | 2 +-
plugins/api.c | 5 ++++
plugins/loader.c | 24 ++++++++++++++---
qemu-options.hx | 9 +++----
tests/plugin/bb.c | 15 ++++++++---
tests/plugin/insn.c | 14 ++++++++--
tests/plugin/mem.c | 47 +++++++++++++++++++-------------
tests/plugin/syscall.c | 23 +++++++++++-----
16 files changed, 252 insertions(+), 101 deletions(-)
--
2.25.1
next reply other threads:[~2021-07-30 14:00 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-30 13:58 Mahmoud Mandour [this message]
2021-07-30 13:58 ` [PATCH v4 01/13] plugins: allow plugin arguments to be passed directly Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 02/13] plugins/api: added a boolean parsing plugin api Mahmoud Mandour
2021-08-02 9:07 ` Alex Bennée
2021-07-30 13:58 ` [PATCH v4 03/13] plugins/hotpages: introduce sortby arg and parsed bool args correctly Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 04/13] plugins/hotblocks: Added correct boolean argument parsing Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 05/13] plugins/lockstep: make socket path not positional & parse bool arg Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 06/13] plugins/hwprofile: adapt to the new plugin arguments scheme Mahmoud Mandour
2021-08-02 10:52 ` Alex Bennée
2021-07-30 13:58 ` [PATCH v4 07/13] plugins/howvec: adapting to the new argument passing scheme Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 08/13] docs/tcg-plugins: new passing parameters scheme for cache docs Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 09/13] tests/plugins/bb: adapt to the new arg passing scheme Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 10/13] tests/plugins/insn: made arg inline not positional and parse it as bool Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 11/13] tests/plugins/mem: introduce "track" arg and make args not positional Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 12/13] tests/plugins/syscalls: adhere to new arg-passing scheme Mahmoud Mandour
2021-07-30 13:58 ` [PATCH v4 13/13] docs/deprecated: deprecate passing plugin args through `arg=` Mahmoud Mandour
2021-08-02 10:53 ` Alex Bennée
2021-08-02 13:44 ` [PATCH v5] " Mahmoud Mandour
2021-08-04 15:40 ` [PATCH v4 00/13] new plugin argument passing scheme Alex Bennée
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=20210730135817.17816-1-ma.mandourr@gmail.com \
--to=ma.mandourr@gmail.com \
--cc=alex.bennee@linaro.org \
--cc=cota@braap.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.