[v5,00/22] stop using variadic argument pack extension

Message ID 1709242325-17218-1-git-send-email-roretzla@linux.microsoft.com (mailing list archive)
Headers
Series stop using variadic argument pack extension |

Message

Tyler Retzlaff Feb. 29, 2024, 9:31 p.m. UTC
  RTE_LOG_LINE cannot be augmented with a prefix format and arguments
without the user of RTE_LOG_LINE using the args... and ## args compiler
extension to conditionally remove trailing comma when the macro receives
only a single argument.

Provide a new/similar macro RTE_LOG_LINE_PREFIX that accepts the prefix
format and arguments as separate parameters allowing them to be expanded
at the correct locations inside of RTE_FMT() allowing the rest of the
non-prefix format string and arguments to be collapsed to the argument
pack which can be directly forwarded with __VA_ARGS__ avoiding the need
for conditional comma removal.

I've done my best to manually check expansions (preprocessed) and compiled
printf of the logs to validate correct output.

v5:
  * add missing newline escape and comma in rte_windows.h
    macro.

v4:
  * remove unintended addition of prefix to bpf log helper.
  * use RTE_LOG_LINE_PREFIX in other places using RTE_FMT_HEAD
    and RTE_FMT_TAIL.
  * add a checkpatch check to prevent reintroduction of ##args.

v3:
  * remove leading _ from RTE_LOG_COMMA the macro is not internal
  * add doxygen comment for existing RTE_LOG{,DP}_LINE function-like
    macros, based on RTE_LOG{,DP} comments.
  * add doxygen comment for new RTE_LOG{,DP}_LINE_PREFIX function-like
    macros, based on RTE_LOG{,DP} comments.
  * merge 2 vhost patches into a single patch (mistake in previous
    submission)

v2:
  * revamp entire series to be ISO C99 compliant, stop using variadic
    argument pack extension.

Tyler Retzlaff (22):
  log: add a per line log helper with parameterized prefix
  cfgfile: stop using variadic argument pack extension
  cmdline: stop using variadic argument pack extension
  compressdev: stop using variadic argument pack extension
  metrics: stop using variadic argument pack extension
  mldev: stop using variadic argument pack extension
  net: stop using variadic argument pack extension
  pdump: stop using variadic argument pack extension
  power: stop using variadic argument pack extension
  rawdev: stop using variadic argument pack extension
  rcu: stop using variadic argument pack extension
  stack: stop using variadic argument pack extension
  eal: stop using variadic argument pack extension
  vhost: stop using variadic argument pack extension
  ip_frag: stop using variadic argument pack extension
  bpf: stop using variadic argument pack extension
  cryptodev: stop using variadic argument pack extension
  eventdev: stop using variadic argument pack extension
  graph: stop using variadic argument pack extension
  member: stop using variadic argument pack extension
  node: stop using variadic argument pack extension
  devtools: forbid use argument variadic pack extension

 devtools/checkpatches.sh                   |  8 +++
 lib/bpf/bpf_impl.h                         |  4 +-
 lib/cfgfile/rte_cfgfile.c                  |  5 +-
 lib/cmdline/cmdline_parse.c                |  2 +-
 lib/cmdline/cmdline_parse_num.c            |  4 +-
 lib/compressdev/rte_compressdev_internal.h |  4 +-
 lib/cryptodev/rte_cryptodev.h              | 15 ++---
 lib/eal/common/eal_trace.h                 |  8 +--
 lib/eal/windows/include/rte_windows.h      |  5 +-
 lib/eventdev/eventdev_pmd.h                | 10 ++-
 lib/eventdev/rte_event_timer_adapter.c     |  5 +-
 lib/graph/graph_private.h                  |  5 +-
 lib/ip_frag/ip_frag_common.h               |  4 +-
 lib/log/rte_log.h                          | 97 ++++++++++++++++++++++++++++++
 lib/member/member.h                        |  5 +-
 lib/metrics/rte_metrics_telemetry.c        | 12 ++--
 lib/mldev/rte_mldev.h                      |  4 +-
 lib/net/rte_net_crc.c                      |  4 +-
 lib/node/node_private.h                    |  6 +-
 lib/pdump/rte_pdump.c                      |  4 +-
 lib/power/power_common.h                   |  6 +-
 lib/rawdev/rte_rawdev_pmd.h                | 17 +++---
 lib/rcu/rte_rcu_qsbr.c                     |  4 +-
 lib/rcu/rte_rcu_qsbr.h                     | 12 ++--
 lib/stack/stack_pvt.h                      | 16 ++---
 lib/vhost/vhost.h                          |  8 +--
 lib/vhost/vhost_crypto.c                   | 21 ++++---
 27 files changed, 196 insertions(+), 99 deletions(-)
  

Comments

David Marchand March 1, 2024, 12:43 p.m. UTC | #1
On Thu, Feb 29, 2024 at 10:32 PM Tyler Retzlaff
<roretzla@linux.microsoft.com> wrote:
>
> RTE_LOG_LINE cannot be augmented with a prefix format and arguments
> without the user of RTE_LOG_LINE using the args... and ## args compiler
> extension to conditionally remove trailing comma when the macro receives
> only a single argument.
>
> Provide a new/similar macro RTE_LOG_LINE_PREFIX that accepts the prefix
> format and arguments as separate parameters allowing them to be expanded
> at the correct locations inside of RTE_FMT() allowing the rest of the
> non-prefix format string and arguments to be collapsed to the argument
> pack which can be directly forwarded with __VA_ARGS__ avoiding the need
> for conditional comma removal.
>
> I've done my best to manually check expansions (preprocessed) and compiled
> printf of the logs to validate correct output.
>
> v5:
>   * add missing newline escape and comma in rte_windows.h
>     macro.

LGTM.
Series applied, thanks.