All of lore.kernel.org
 help / color / mirror / Atom feed
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



             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.