DPDK patches and discussions
 help / color / mirror / Atom feed
From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: dev@dpdk.org
Cc: Anatoly Burakov <anatoly.burakov@intel.com>,
	Ashish Gupta <ashish.gupta@marvell.com>,
	Chenbo Xia <chenbox@nvidia.com>,
	Cristian Dumitrescu <cristian.dumitrescu@intel.com>,
	David Hunt <david.hunt@intel.com>,
	Fan Zhang <fanzhang.oss@gmail.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	Jasvinder Singh <jasvinder.singh@intel.com>,
	Jerin Jacob <jerinj@marvell.com>,
	Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	Reshma Pattan <reshma.pattan@intel.com>,
	Sachin Saxena <sachin.saxena@nxp.com>,
	Sivaprasad Tummala <sivaprasad.tummala@amd.com>,
	Srikanth Yalavarthi <syalavarthi@marvell.com>,
	Stephen Hemminger <stephen@networkplumber.org>,
	Sunil Kumar Kori <skori@marvell.com>,
	bruce.richardson@intel.com, mb@smartsharesystems.com,
	thomas@monjalon.net,
	Tyler Retzlaff <roretzla@linux.microsoft.com>
Subject: [PATCH v3 01/16] log: add a per line log helper with parameterized prefix
Date: Mon, 26 Feb 2024 12:19:31 -0800	[thread overview]
Message-ID: <1708978786-6740-2-git-send-email-roretzla@linux.microsoft.com> (raw)
In-Reply-To: <1708978786-6740-1-git-send-email-roretzla@linux.microsoft.com>

Providing a custom prefix when logging is common for components. Lift
ISO C99 compliant helper macros from mlx5_common.h and provide
RTE_LOG_LINE_PREFIX macro that can expand similar to RTE_LOG_LINE with
a custom prefix and argument list.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
 lib/log/rte_log.h | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 97 insertions(+)

diff --git a/lib/log/rte_log.h b/lib/log/rte_log.h
index fbc0df7..8f10e31 100644
--- a/lib/log/rte_log.h
+++ b/lib/log/rte_log.h
@@ -367,18 +367,115 @@ int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
 #define RTE_LOG_CHECK_NO_NEWLINE(...)
 #endif
 
+/**
+ * Generates a log message with a single trailing newline.
+ *
+ * The RTE_LOG_LINE() is a helper that expands logging of a message
+ * with RTE_LOG() appending a single newline to the formatted message.
+ *
+ * @param l
+ *   Log level. A value between EMERG (1) and DEBUG (8). The short name
+ *   is expanded by the macro, so it cannot be an integer value.
+ * @param t
+ *   The log type, for example, EAL. The short name is expanded by the
+ *   macro, so it cannot be an integer value.
+ * @param ...
+ *   The fmt string, as in printf(3), followed by the variable arguments
+ *   required by the format.
+ */
 #define RTE_LOG_LINE(l, t, ...) do { \
 	RTE_LOG_CHECK_NO_NEWLINE(RTE_FMT_HEAD(__VA_ARGS__ ,)); \
 	RTE_LOG(l, t, RTE_FMT(RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \
 		RTE_FMT_TAIL(__VA_ARGS__ ,))); \
 } while (0)
 
+/**
+ * Generates a log message for data path with a single trailing newline.
+ *
+ * Similar to RTE_LOG_LINE(), except that it is removed at compilation
+ * time if the RTE_LOG_DP_LEVEL configuration option is lower than the
+ * log level argument.
+ *
+ * The RTE_LOG_LINE() is a helper that expands logging of a message
+ * with RTE_LOG_DP() appending a single newline to the formatted
+ * message.
+ *
+ * @param l
+ *   Log level. A value between EMERG (1) and DEBUG (8). The short name
+ *   is expanded by the macro, so it cannot be an integer value.
+ * @param t
+ *   The log type, for example, EAL. The short name is expanded by the
+ *   macro, so it cannot be an integer value.
+ * @param ...
+ *   The fmt string, as in printf(3), followed by the variable arguments
+ *   required by the format.
+ */
 #define RTE_LOG_DP_LINE(l, t, ...) do { \
 	RTE_LOG_CHECK_NO_NEWLINE(RTE_FMT_HEAD(__VA_ARGS__ ,)); \
 	RTE_LOG_DP(l, t, RTE_FMT(RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \
 		RTE_FMT_TAIL(__VA_ARGS__ ,))); \
 } while (0)
 
+#define RTE_LOG_COMMA ,
+
+/*
+ * Generates a log message with a supplied prefix and arguments with a
+ * single trailing newline.
+ *
+ * The RTE_LOG_LINE_PREFIX() is a helper that expands logging of a
+ * message with RTE_LOG() prepending the supplied prefix and arguments
+ * appending a single newline to the formatted message.
+ *
+ * @param l
+ *   Log level. A value between EMERG (1) and DEBUG (8). The short name
+ *   is expanded by the macro, so it cannot be an integer value.
+ * @param t
+ *   The log type, for example, EAL. The short name is expanded by the
+ *   macro, so it cannot be an integer value.
+ * @param prefix
+ *   The prefix format string.
+ * @param args
+ *   The arguments for the prefix format string. If args contains
+ *   multiple arguments use RTE_LOG_COMMA to defer expansion.
+ * @param ...
+ *   The fmt string, as in printf(3), followed by the variable arguments
+ *   required by the format.
+ */
+#define RTE_LOG_LINE_PREFIX(l, t, prefix, args, ...) do { \
+	RTE_LOG_CHECK_NO_NEWLINE(RTE_FMT_HEAD(prefix __VA_ARGS__ ,)); \
+	RTE_LOG(l, t, RTE_FMT(prefix RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \
+	    args RTE_LOG_COMMA RTE_FMT_TAIL(__VA_ARGS__ ,))); \
+} while (0)
+
+/*
+ * Generates a log message for the data path with a supplied prefix and
+ * arguments with a single trailing newline.
+ *
+ * The RTE_LOG_DP_LINE_PREFIX() is a helper that expands logging of a
+ * message with RTE_LOG_DP() prepending the supplied prefix and
+ * arguments appending a single newline to the formatted message.
+ *
+ * @param l
+ *   Log level. A value between EMERG (1) and DEBUG (8). The short name
+ *   is expanded by the macro, so it cannot be an integer value.
+ * @param t
+ *   The log type, for example, EAL. The short name is expanded by the
+ *   macro, so it cannot be an integer value.
+ * @param prefix
+ *   The prefix format string.
+ * @param args
+ *   The arguments for the prefix format string. If args contains
+ *   multiple arguments use RTE_LOG_COMMA to defer expansion.
+ * @param ...
+ *   The fmt string, as in printf(3), followed by the variable arguments
+ *   required by the format.
+ */
+#define RTE_LOG_DP_LINE_PREFIX(l, t, prefix, args, ...) do { \
+	RTE_LOG_CHECK_NO_NEWLINE(RTE_FMT_HEAD(prefix __VA_ARGS__ ,)); \
+	RTE_LOG_DP(l, t, RTE_FMT(prefix RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \
+	    args RTE_LOG_COMMA RTE_FMT_TAIL(__VA_ARGS__ ,))); \
+} while (0)
+
 #define RTE_LOG_REGISTER_IMPL(type, name, level)			    \
 int type;								    \
 RTE_INIT(__##type)							    \
-- 
1.8.3.1


  reply	other threads:[~2024-02-26 20:19 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-12 21:49 [PATCH 00/15] use GCC/MSVC compatible __VA_ARGS__ Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 01/15] eal: use GCC and MSVC common VA ARGS extension Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 02/15] bpf: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 03/15] cfgfile: " Tyler Retzlaff
2024-02-13  9:03   ` Bruce Richardson
2024-02-12 21:49 ` [PATCH 04/15] cmdline: " Tyler Retzlaff
2024-02-13  9:04   ` Bruce Richardson
2024-02-12 21:49 ` [PATCH 05/15] ip_frag: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 06/15] compressdev: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 07/15] metrics: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 08/15] mldev: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 09/15] net: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 10/15] pdump: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 11/15] power: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 12/15] rawdev: " Tyler Retzlaff
2024-02-13 12:46   ` Hemant Agrawal
2024-02-12 21:49 ` [PATCH 13/15] rcu: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 14/15] stack: " Tyler Retzlaff
2024-02-12 21:49 ` [PATCH 15/15] vhost: " Tyler Retzlaff
2024-02-13  9:00 ` [PATCH 00/15] use GCC/MSVC compatible __VA_ARGS__ Bruce Richardson
2024-02-13  9:09 ` Morten Brørup
2024-02-18 13:38 ` Thomas Monjalon
2024-02-22 23:46 ` [PATCH v2 00/17] stop using variadic argument pack extension Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 01/17] log: add a per line log helper with parameterized prefix Tyler Retzlaff
2024-02-26 18:04     ` Thomas Monjalon
2024-02-22 23:46   ` [PATCH v2 02/17] bpf: stop using variadic argument pack extension Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 03/17] cfgfile: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 04/17] cmdline: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 05/17] compressdev: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 06/17] metrics: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 07/17] mldev: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 08/17] net: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 09/17] pdump: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 10/17] power: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 11/17] rawdev: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 12/17] rcu: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 13/17] stack: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 14/17] eal: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 15/17] vhost: " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 16/17] " Tyler Retzlaff
2024-02-22 23:46   ` [PATCH v2 17/17] ip_frag: " Tyler Retzlaff
2024-02-23  8:10   ` [PATCH v2 00/17] " Morten Brørup
2024-02-26 20:19 ` [PATCH v3 00/16] " Tyler Retzlaff
2024-02-26 20:19   ` Tyler Retzlaff [this message]
2024-02-26 20:19   ` [PATCH v3 02/16] bpf: " Tyler Retzlaff
2024-02-27  9:48     ` Konstantin Ananyev
2024-02-28 13:16     ` David Marchand
2024-02-28 13:34       ` Konstantin Ananyev
2024-02-28 17:24         ` Tyler Retzlaff
2024-02-28 17:27           ` Konstantin Ananyev
2024-02-28 17:29             ` Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 03/16] cfgfile: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 04/16] cmdline: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 05/16] compressdev: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 06/16] metrics: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 07/16] mldev: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 08/16] net: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 09/16] pdump: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 10/16] power: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 11/16] rawdev: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 12/16] rcu: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 13/16] stack: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 14/16] eal: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 15/16] vhost: " Tyler Retzlaff
2024-02-26 20:19   ` [PATCH v3 16/16] ip_frag: " Tyler Retzlaff
2024-02-27  9:48     ` Konstantin Ananyev
2024-02-26 20:54   ` [PATCH v3 00/16] " Stephen Hemminger
2024-02-27 18:14     ` Tyler Retzlaff
2024-02-28 11:45       ` David Marchand
2024-02-28 17:27         ` Tyler Retzlaff
2024-02-28 17:29   ` David Marchand
2024-02-28 17:59     ` Tyler Retzlaff
2024-02-29  8:06       ` David Marchand
2024-02-29 19:53 ` [PATCH v4 00/22] " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 01/22] log: add a per line log helper with parameterized prefix Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 02/22] cfgfile: stop using variadic argument pack extension Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 03/22] cmdline: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 04/22] compressdev: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 05/22] metrics: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 06/22] mldev: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 07/22] net: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 08/22] pdump: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 09/22] power: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 10/22] rawdev: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 11/22] rcu: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 12/22] stack: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 13/22] eal: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 14/22] vhost: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 15/22] ip_frag: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 16/22] bpf: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 17/22] cryptodev: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 18/22] eventdev: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 19/22] graph: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 20/22] member: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 21/22] node: " Tyler Retzlaff
2024-02-29 19:53   ` [PATCH v4 22/22] devtools: forbid use argument variadic " Tyler Retzlaff
2024-02-29 21:31 ` [PATCH v5 00/22] stop using variadic argument " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 01/22] log: add a per line log helper with parameterized prefix Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 02/22] cfgfile: stop using variadic argument pack extension Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 03/22] cmdline: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 04/22] compressdev: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 05/22] metrics: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 06/22] mldev: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 07/22] net: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 08/22] pdump: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 09/22] power: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 10/22] rawdev: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 11/22] rcu: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 12/22] stack: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 13/22] eal: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 14/22] vhost: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 15/22] ip_frag: " Tyler Retzlaff
2024-02-29 21:31   ` [PATCH v5 16/22] bpf: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 17/22] cryptodev: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 18/22] eventdev: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 19/22] graph: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 20/22] member: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 21/22] node: " Tyler Retzlaff
2024-02-29 21:32   ` [PATCH v5 22/22] devtools: forbid use argument variadic " Tyler Retzlaff
2024-03-01 12:43   ` [PATCH v5 00/22] stop using variadic argument " David Marchand

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=1708978786-6740-2-git-send-email-roretzla@linux.microsoft.com \
    --to=roretzla@linux.microsoft.com \
    --cc=anatoly.burakov@intel.com \
    --cc=ashish.gupta@marvell.com \
    --cc=bruce.richardson@intel.com \
    --cc=chenbox@nvidia.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=fanzhang.oss@gmail.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jasvinder.singh@intel.com \
    --cc=jerinj@marvell.com \
    --cc=konstantin.v.ananyev@yandex.ru \
    --cc=maxime.coquelin@redhat.com \
    --cc=mb@smartsharesystems.com \
    --cc=reshma.pattan@intel.com \
    --cc=sachin.saxena@nxp.com \
    --cc=sivaprasad.tummala@amd.com \
    --cc=skori@marvell.com \
    --cc=stephen@networkplumber.org \
    --cc=syalavarthi@marvell.com \
    --cc=thomas@monjalon.net \
    /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).