* [PATCH] lib: remove duplicate prefix in logs
@ 2024-01-24 12:04 David Marchand
2024-01-24 12:17 ` Morten Brørup
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: David Marchand @ 2024-01-24 12:04 UTC (permalink / raw)
To: dev
Cc: Thomas Monjalon, Chengwen Feng, Kevin Laatz, Bruce Richardson,
Elena Agostini, Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram,
Zhirun Yan, Pavan Nikhilesh, Ciara Power, Maxime Coquelin,
Chenbo Xia, Andrew Rybchenko
RTE_LOG() macros prefixe the log messages based on the logtype.
This results in logs like:
TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
TMTY: TELEMETRY: Socket creation and binding ok
TMTY: TELEMETRY: Telemetry initialized ok
Remove redundancy in some libraries following their conversion to
RTE_LOG/RTE_LOG_LINE.
Fixes: 97433132c2ed ("lib: use per line logging in helpers")
Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
Reported-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
lib/dmadev/rte_dmadev.c | 3 +--
lib/gpudev/gpudev.c | 3 +--
lib/graph/graph_private.h | 2 +-
lib/node/node_private.h | 2 +-
lib/telemetry/telemetry.c | 4 ++--
lib/vhost/vhost.h | 6 +++---
6 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index 5953a77bd6..dbaa14f262 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
#define RTE_LOGTYPE_DMA rte_dma_logtype
#define RTE_DMA_LOG(level, ...) \
- RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
- RTE_FMT_TAIL(__VA_ARGS__ ,)))
+ RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
int
rte_dma_dev_max(size_t dev_max)
diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
index de8291151f..1c2011b856 100644
--- a/lib/gpudev/gpudev.c
+++ b/lib/gpudev/gpudev.c
@@ -20,8 +20,7 @@ RTE_LOG_REGISTER_DEFAULT(gpu_logtype, NOTICE);
#define RTE_LOGTYPE_GPUDEV gpu_logtype
#define GPU_LOG(level, ...) \
- RTE_LOG_LINE(level, GPUDEV, RTE_FMT("gpu: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
- RTE_FMT_TAIL(__VA_ARGS__ ,)))
+ RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
/* Set any driver error as EPERM */
#define GPU_DRV_RET(function) \
diff --git a/lib/graph/graph_private.h b/lib/graph/graph_private.h
index f9274ce96c..fb88d4bc84 100644
--- a/lib/graph/graph_private.h
+++ b/lib/graph/graph_private.h
@@ -22,7 +22,7 @@ extern int rte_graph_logtype;
#define GRAPH_LOG(level, ...) \
RTE_LOG_LINE(level, GRAPH, \
- RTE_FMT("GRAPH: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
+ RTE_FMT("%s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
__func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__ ,)))
#define graph_err(...) GRAPH_LOG(ERR, __VA_ARGS__)
diff --git a/lib/node/node_private.h b/lib/node/node_private.h
index 845fdaa12e..73563e4cd2 100644
--- a/lib/node/node_private.h
+++ b/lib/node/node_private.h
@@ -15,7 +15,7 @@ extern int rte_node_logtype;
#define NODE_LOG(level, node_name, ...) \
RTE_LOG_LINE(level, NODE, \
- RTE_FMT("NODE %s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
+ RTE_FMT("%s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
node_name, __func__, __LINE__, \
RTE_FMT_TAIL(__VA_ARGS__ ,)))
diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
index 31e2391867..47846ef868 100644
--- a/lib/telemetry/telemetry.c
+++ b/lib/telemetry/telemetry.c
@@ -56,8 +56,8 @@ static const char *socket_dir; /* runtime directory */
static rte_cpuset_t *thread_cpuset;
RTE_LOG_REGISTER_DEFAULT(logtype, WARNING);
-#define RTE_LOGTYPE_TMTY logtype
-#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TMTY, "TELEMETRY: " __VA_ARGS__)
+#define RTE_LOGTYPE_TELEMETRY logtype
+#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TELEMETRY, "" __VA_ARGS__)
/* list of command callbacks, with one command registered by default */
static struct cmd_callback *callbacks;
diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
index 470dadbba6..0b13374980 100644
--- a/lib/vhost/vhost.h
+++ b/lib/vhost/vhost.h
@@ -678,10 +678,10 @@ extern int vhost_data_log_level;
#define RTE_LOGTYPE_VHOST_DATA vhost_data_log_level
#define VHOST_CONFIG_LOG(prefix, level, fmt, args...) \
- RTE_LOG_LINE(level, VHOST_CONFIG, "VHOST_CONFIG: (%s) " fmt, prefix, ##args)
+ RTE_LOG_LINE(level, VHOST_CONFIG, "(%s) " fmt, prefix, ##args)
#define VHOST_DATA_LOG(prefix, level, fmt, args...) \
- RTE_LOG_DP_LINE(level, VHOST_DATA, "VHOST_DATA: (%s) " fmt, prefix, ##args)
+ RTE_LOG_DP_LINE(level, VHOST_DATA, "(%s) " fmt, prefix, ##args)
#ifdef RTE_LIBRTE_VHOST_DEBUG
#define VHOST_MAX_PRINT_BUFF 6072
@@ -700,7 +700,7 @@ extern int vhost_data_log_level;
} \
snprintf(packet + strnlen(packet, VHOST_MAX_PRINT_BUFF), VHOST_MAX_PRINT_BUFF - strnlen(packet, VHOST_MAX_PRINT_BUFF), "\n"); \
\
- RTE_LOG_DP(DEBUG, VHOST_DATA, "VHOST_DATA: (%s) %s", dev->ifname, packet); \
+ RTE_LOG_DP(DEBUG, VHOST_DATA, "(%s) %s", dev->ifname, packet); \
} while (0)
#else
#define PRINT_PACKET(device, addr, size, header) do {} while (0)
--
2.43.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
@ 2024-01-24 12:17 ` Morten Brørup
2024-01-25 8:13 ` David Marchand
2024-01-24 13:26 ` Bruce Richardson
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Morten Brørup @ 2024-01-24 12:17 UTC (permalink / raw)
To: David Marchand, dev
Cc: Thomas Monjalon, Chengwen Feng, Kevin Laatz, Bruce Richardson,
Elena Agostini, Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram,
Zhirun Yan, Pavan Nikhilesh, Ciara Power, Maxime Coquelin,
Chenbo Xia, Andrew Rybchenko
> From: David Marchand [mailto:david.marchand@redhat.com]
> Sent: Wednesday, 24 January 2024 13.05
>
> RTE_LOG() macros prefixe the log messages based on the logtype.
> This results in logs like:
>
> TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> TMTY: TELEMETRY: Socket creation and binding ok
> TMTY: TELEMETRY: Telemetry initialized ok
>
> Remove redundancy in some libraries following their conversion to
> RTE_LOG/RTE_LOG_LINE.
>
> Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
>
> Reported-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/dmadev/rte_dmadev.c | 3 +--
> lib/gpudev/gpudev.c | 3 +--
> lib/graph/graph_private.h | 2 +-
> lib/node/node_private.h | 2 +-
> lib/telemetry/telemetry.c | 4 ++--
> lib/vhost/vhost.h | 6 +++---
> 6 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> index 5953a77bd6..dbaa14f262 100644
> --- a/lib/dmadev/rte_dmadev.c
> +++ b/lib/dmadev/rte_dmadev.c
> @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> #define RTE_LOGTYPE_DMA rte_dma_logtype
>
> #define RTE_DMA_LOG(level, ...) \
> - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__
> ,), \
> - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
>
> int
> rte_dma_dev_max(size_t dev_max)
> diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
> index de8291151f..1c2011b856 100644
> --- a/lib/gpudev/gpudev.c
> +++ b/lib/gpudev/gpudev.c
> @@ -20,8 +20,7 @@ RTE_LOG_REGISTER_DEFAULT(gpu_logtype, NOTICE);
> #define RTE_LOGTYPE_GPUDEV gpu_logtype
>
> #define GPU_LOG(level, ...) \
> - RTE_LOG_LINE(level, GPUDEV, RTE_FMT("gpu: "
> RTE_FMT_HEAD(__VA_ARGS__ ,), \
> - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> + RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
Suggestion:
GPUDEV -> GPU, like DMA, not DMADEV.
>
> /* Set any driver error as EPERM */
> #define GPU_DRV_RET(function) \
> diff --git a/lib/graph/graph_private.h b/lib/graph/graph_private.h
> index f9274ce96c..fb88d4bc84 100644
> --- a/lib/graph/graph_private.h
> +++ b/lib/graph/graph_private.h
> @@ -22,7 +22,7 @@ extern int rte_graph_logtype;
>
> #define GRAPH_LOG(level, ...)
> \
> RTE_LOG_LINE(level, GRAPH,
> \
> - RTE_FMT("GRAPH: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,),
> \
> + RTE_FMT("%s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,),
> \
> __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__ ,)))
>
> #define graph_err(...) GRAPH_LOG(ERR, __VA_ARGS__)
> diff --git a/lib/node/node_private.h b/lib/node/node_private.h
> index 845fdaa12e..73563e4cd2 100644
> --- a/lib/node/node_private.h
> +++ b/lib/node/node_private.h
> @@ -15,7 +15,7 @@ extern int rte_node_logtype;
>
> #define NODE_LOG(level, node_name, ...)
> \
> RTE_LOG_LINE(level, NODE,
> \
> - RTE_FMT("NODE %s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,),
> \
> + RTE_FMT("%s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,),
> \
> node_name, __func__, __LINE__,
> \
> RTE_FMT_TAIL(__VA_ARGS__ ,)))
>
> diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
> index 31e2391867..47846ef868 100644
> --- a/lib/telemetry/telemetry.c
> +++ b/lib/telemetry/telemetry.c
> @@ -56,8 +56,8 @@ static const char *socket_dir; /* runtime
> directory */
> static rte_cpuset_t *thread_cpuset;
>
> RTE_LOG_REGISTER_DEFAULT(logtype, WARNING);
> -#define RTE_LOGTYPE_TMTY logtype
> -#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TMTY, "TELEMETRY: "
> __VA_ARGS__)
> +#define RTE_LOGTYPE_TELEMETRY logtype
> +#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TELEMETRY, ""
+1 for TELEMETRY instead of TMTY.
> __VA_ARGS__)
>
> /* list of command callbacks, with one command registered by default
> */
> static struct cmd_callback *callbacks;
> diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
> index 470dadbba6..0b13374980 100644
> --- a/lib/vhost/vhost.h
> +++ b/lib/vhost/vhost.h
> @@ -678,10 +678,10 @@ extern int vhost_data_log_level;
> #define RTE_LOGTYPE_VHOST_DATA vhost_data_log_level
>
> #define VHOST_CONFIG_LOG(prefix, level, fmt, args...) \
> - RTE_LOG_LINE(level, VHOST_CONFIG, "VHOST_CONFIG: (%s) " fmt,
> prefix, ##args)
> + RTE_LOG_LINE(level, VHOST_CONFIG, "(%s) " fmt, prefix, ##args)
>
> #define VHOST_DATA_LOG(prefix, level, fmt, args...) \
> - RTE_LOG_DP_LINE(level, VHOST_DATA, "VHOST_DATA: (%s) " fmt,
> prefix, ##args)
> + RTE_LOG_DP_LINE(level, VHOST_DATA, "(%s) " fmt, prefix, ##args)
>
> #ifdef RTE_LIBRTE_VHOST_DEBUG
> #define VHOST_MAX_PRINT_BUFF 6072
> @@ -700,7 +700,7 @@ extern int vhost_data_log_level;
> } \
> snprintf(packet + strnlen(packet, VHOST_MAX_PRINT_BUFF),
> VHOST_MAX_PRINT_BUFF - strnlen(packet, VHOST_MAX_PRINT_BUFF), "\n"); \
> \
> - RTE_LOG_DP(DEBUG, VHOST_DATA, "VHOST_DATA: (%s) %s", dev->ifname,
> packet); \
> + RTE_LOG_DP(DEBUG, VHOST_DATA, "(%s) %s", dev->ifname, packet); \
> } while (0)
> #else
> #define PRINT_PACKET(device, addr, size, header) do {} while (0)
> --
> 2.43.0
Thank you for cleaning this up, David.
Acked-by: Morten Brørup <mb@smartsharesystems.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
2024-01-24 12:17 ` Morten Brørup
@ 2024-01-24 13:26 ` Bruce Richardson
2024-01-24 13:28 ` Bruce Richardson
2024-01-24 14:39 ` Power, Ciara
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Bruce Richardson @ 2024-01-24 13:26 UTC (permalink / raw)
To: David Marchand
Cc: dev, Thomas Monjalon, Chengwen Feng, Kevin Laatz, Elena Agostini,
Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram, Zhirun Yan,
Pavan Nikhilesh, Ciara Power, Maxime Coquelin, Chenbo Xia,
Andrew Rybchenko
On Wed, Jan 24, 2024 at 01:04:49PM +0100, David Marchand wrote:
> RTE_LOG() macros prefixe the log messages based on the logtype.
> This results in logs like:
>
> TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> TMTY: TELEMETRY: Socket creation and binding ok
> TMTY: TELEMETRY: Telemetry initialized ok
>
> Remove redundancy in some libraries following their conversion to
> RTE_LOG/RTE_LOG_LINE.
>
> Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
>
> Reported-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/dmadev/rte_dmadev.c | 3 +--
> lib/gpudev/gpudev.c | 3 +--
> lib/graph/graph_private.h | 2 +-
> lib/node/node_private.h | 2 +-
> lib/telemetry/telemetry.c | 4 ++--
> lib/vhost/vhost.h | 6 +++---
> 6 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> index 5953a77bd6..dbaa14f262 100644
> --- a/lib/dmadev/rte_dmadev.c
> +++ b/lib/dmadev/rte_dmadev.c
> @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> #define RTE_LOGTYPE_DMA rte_dma_logtype
>
> #define RTE_DMA_LOG(level, ...) \
> - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
> - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
>
Is it not useful to have the prefix in the log macro itself? That way it's
consistent across all messages.
/Bruce
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 13:26 ` Bruce Richardson
@ 2024-01-24 13:28 ` Bruce Richardson
0 siblings, 0 replies; 10+ messages in thread
From: Bruce Richardson @ 2024-01-24 13:28 UTC (permalink / raw)
To: David Marchand
Cc: dev, Thomas Monjalon, Chengwen Feng, Kevin Laatz, Elena Agostini,
Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram, Zhirun Yan,
Pavan Nikhilesh, Ciara Power, Maxime Coquelin, Chenbo Xia,
Andrew Rybchenko
On Wed, Jan 24, 2024 at 01:26:58PM +0000, Bruce Richardson wrote:
> On Wed, Jan 24, 2024 at 01:04:49PM +0100, David Marchand wrote:
> > RTE_LOG() macros prefixe the log messages based on the logtype.
> > This results in logs like:
> >
> > TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> > TMTY: TELEMETRY: Socket creation and binding ok
> > TMTY: TELEMETRY: Telemetry initialized ok
> >
> > Remove redundancy in some libraries following their conversion to
> > RTE_LOG/RTE_LOG_LINE.
> >
> > Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> > Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
> >
> > Reported-by: Thomas Monjalon <thomas@monjalon.net>
> > Signed-off-by: David Marchand <david.marchand@redhat.com>
> > ---
> > lib/dmadev/rte_dmadev.c | 3 +--
> > lib/gpudev/gpudev.c | 3 +--
> > lib/graph/graph_private.h | 2 +-
> > lib/node/node_private.h | 2 +-
> > lib/telemetry/telemetry.c | 4 ++--
> > lib/vhost/vhost.h | 6 +++---
> > 6 files changed, 9 insertions(+), 11 deletions(-)
> >
> > diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> > index 5953a77bd6..dbaa14f262 100644
> > --- a/lib/dmadev/rte_dmadev.c
> > +++ b/lib/dmadev/rte_dmadev.c
> > @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> > #define RTE_LOGTYPE_DMA rte_dma_logtype
> >
> > #define RTE_DMA_LOG(level, ...) \
> > - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
> > - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> > + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
> >
>
> Is it not useful to have the prefix in the log macro itself? That way it's
> consistent across all messages.
>
Sorry, I think I misunderstood the problem and fix. Please ignore this
mail.
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
2024-01-24 12:17 ` Morten Brørup
2024-01-24 13:26 ` Bruce Richardson
@ 2024-01-24 14:39 ` Power, Ciara
2024-01-25 3:06 ` fengchengwen
2024-01-25 12:55 ` [PATCH v2] " David Marchand
4 siblings, 0 replies; 10+ messages in thread
From: Power, Ciara @ 2024-01-24 14:39 UTC (permalink / raw)
To: Marchand, David, dev
Cc: Thomas Monjalon, Chengwen Feng, Laatz, Kevin, Richardson, Bruce,
Elena Agostini, Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram,
Yan, Zhirun, Pavan Nikhilesh, Maxime Coquelin, Chenbo Xia,
Andrew Rybchenko
> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Wednesday, January 24, 2024 12:05 PM
> To: dev@dpdk.org
> Cc: Thomas Monjalon <thomas@monjalon.net>; Chengwen Feng
> <fengchengwen@huawei.com>; Laatz, Kevin <kevin.laatz@intel.com>;
> Richardson, Bruce <bruce.richardson@intel.com>; Elena Agostini
> <eagostini@nvidia.com>; Jerin Jacob <jerinj@marvell.com>; Kiran Kumar K
> <kirankumark@marvell.com>; Nithin Dabilpuram
> <ndabilpuram@marvell.com>; Yan, Zhirun <zhirun.yan@intel.com>; Pavan
> Nikhilesh <pbhagavatula@marvell.com>; Power, Ciara
> <ciara.power@intel.com>; Maxime Coquelin
> <maxime.coquelin@redhat.com>; Chenbo Xia <chenbox@nvidia.com>;
> Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Subject: [PATCH] lib: remove duplicate prefix in logs
>
> RTE_LOG() macros prefixe the log messages based on the logtype.
> This results in logs like:
>
> TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> TMTY: TELEMETRY: Socket creation and binding ok
> TMTY: TELEMETRY: Telemetry initialized ok
>
> Remove redundancy in some libraries following their conversion to
> RTE_LOG/RTE_LOG_LINE.
>
> Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
>
> Reported-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/dmadev/rte_dmadev.c | 3 +--
> lib/gpudev/gpudev.c | 3 +--
> lib/graph/graph_private.h | 2 +-
> lib/node/node_private.h | 2 +-
> lib/telemetry/telemetry.c | 4 ++--
> lib/vhost/vhost.h | 6 +++---
> 6 files changed, 9 insertions(+), 11 deletions(-)
>
<snip>
Acked-by: Ciara Power <ciara.power@intel.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
` (2 preceding siblings ...)
2024-01-24 14:39 ` Power, Ciara
@ 2024-01-25 3:06 ` fengchengwen
2024-01-25 12:55 ` [PATCH v2] " David Marchand
4 siblings, 0 replies; 10+ messages in thread
From: fengchengwen @ 2024-01-25 3:06 UTC (permalink / raw)
To: David Marchand, dev
Cc: Thomas Monjalon, Kevin Laatz, Bruce Richardson, Elena Agostini,
Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram, Zhirun Yan,
Pavan Nikhilesh, Ciara Power, Maxime Coquelin, Chenbo Xia,
Andrew Rybchenko
For dmadev part
Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
Thanks
On 2024/1/24 20:04, David Marchand wrote:
> RTE_LOG() macros prefixe the log messages based on the logtype.
> This results in logs like:
>
> TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> TMTY: TELEMETRY: Socket creation and binding ok
> TMTY: TELEMETRY: Telemetry initialized ok
>
> Remove redundancy in some libraries following their conversion to
> RTE_LOG/RTE_LOG_LINE.
>
> Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
>
> Reported-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> ---
> lib/dmadev/rte_dmadev.c | 3 +--
> lib/gpudev/gpudev.c | 3 +--
> lib/graph/graph_private.h | 2 +-
> lib/node/node_private.h | 2 +-
> lib/telemetry/telemetry.c | 4 ++--
> lib/vhost/vhost.h | 6 +++---
> 6 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> index 5953a77bd6..dbaa14f262 100644
> --- a/lib/dmadev/rte_dmadev.c
> +++ b/lib/dmadev/rte_dmadev.c
> @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> #define RTE_LOGTYPE_DMA rte_dma_logtype
>
> #define RTE_DMA_LOG(level, ...) \
> - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
> - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
>
> int
> rte_dma_dev_max(size_t dev_max)
...
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] lib: remove duplicate prefix in logs
2024-01-24 12:17 ` Morten Brørup
@ 2024-01-25 8:13 ` David Marchand
2024-01-25 8:53 ` Morten Brørup
0 siblings, 1 reply; 10+ messages in thread
From: David Marchand @ 2024-01-25 8:13 UTC (permalink / raw)
To: Morten Brørup
Cc: dev, Thomas Monjalon, Chengwen Feng, Kevin Laatz,
Bruce Richardson, Elena Agostini, Jerin Jacob, Kiran Kumar K,
Nithin Dabilpuram, Zhirun Yan, Pavan Nikhilesh, Ciara Power,
Maxime Coquelin, Chenbo Xia, Andrew Rybchenko
On Wed, Jan 24, 2024 at 1:17 PM Morten Brørup <mb@smartsharesystems.com> wrote:
> > diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> > index 5953a77bd6..dbaa14f262 100644
> > --- a/lib/dmadev/rte_dmadev.c
> > +++ b/lib/dmadev/rte_dmadev.c
> > @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> > #define RTE_LOGTYPE_DMA rte_dma_logtype
> >
> > #define RTE_DMA_LOG(level, ...) \
> > - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__
> > ,), \
> > - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> > + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
> >
> > int
> > rte_dma_dev_max(size_t dev_max)
> > diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
> > index de8291151f..1c2011b856 100644
> > --- a/lib/gpudev/gpudev.c
> > +++ b/lib/gpudev/gpudev.c
> > @@ -20,8 +20,7 @@ RTE_LOG_REGISTER_DEFAULT(gpu_logtype, NOTICE);
> > #define RTE_LOGTYPE_GPUDEV gpu_logtype
> >
> > #define GPU_LOG(level, ...) \
> > - RTE_LOG_LINE(level, GPUDEV, RTE_FMT("gpu: "
> > RTE_FMT_HEAD(__VA_ARGS__ ,), \
> > - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> > + RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
>
> Suggestion:
> GPUDEV -> GPU, like DMA, not DMADEV.
I had not checked before, but for consistency, I would go the other way around.
$ for dir in lib/*dev; do git grep RTE_LOG_LINE $dir; done
lib/bbdev/rte_bbdev.c: RTE_LOG_LINE(level, BBDEV, "" __VA_ARGS__)
lib/compressdev/rte_compressdev_internal.h: RTE_LOG_LINE(level,
COMPRESSDEV, "%s(): " fmt, __func__, ## args)
lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(ERR, CRYPTODEV, \
lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(INFO, CRYPTODEV, "" __VA_ARGS__)
lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(DEBUG, CRYPTODEV, \
lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(DEBUG, CRYPTODEV, \
lib/dmadev/rte_dmadev.c: RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
lib/ethdev/rte_ethdev.h: RTE_LOG_LINE(level, ETHDEV, "" __VA_ARGS__)
lib/eventdev/eventdev_pmd.h: RTE_LOG_LINE(ERR, EVENTDEV, \
lib/eventdev/eventdev_pmd.h: RTE_LOG_LINE(DEBUG, EVENTDEV, \
lib/eventdev/rte_event_timer_adapter.c: RTE_LOG_LINE(level, logtype, \
lib/gpudev/gpudev.c: RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
lib/mldev/rte_mldev.h: RTE_LOG_LINE(level, MLDEV, "%s(): " fmt,
__func__, ##args)
lib/rawdev/rte_rawdev_pmd.h: RTE_LOG_LINE(level, RAWDEV, "%s(): "
fmt, __func__, ##args)
lib/regexdev/rte_regexdev.h: RTE_LOG_LINE(level, REGEXDEV, "" __VA_ARGS__)
--
David Marchand
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [PATCH] lib: remove duplicate prefix in logs
2024-01-25 8:13 ` David Marchand
@ 2024-01-25 8:53 ` Morten Brørup
0 siblings, 0 replies; 10+ messages in thread
From: Morten Brørup @ 2024-01-25 8:53 UTC (permalink / raw)
To: David Marchand
Cc: dev, Thomas Monjalon, Chengwen Feng, Kevin Laatz,
Bruce Richardson, Elena Agostini, Jerin Jacob, Kiran Kumar K,
Nithin Dabilpuram, Zhirun Yan, Pavan Nikhilesh, Ciara Power,
Maxime Coquelin, Chenbo Xia, Andrew Rybchenko
> From: David Marchand [mailto:david.marchand@redhat.com]
> Sent: Thursday, 25 January 2024 09.14
>
> On Wed, Jan 24, 2024 at 1:17 PM Morten Brørup
> <mb@smartsharesystems.com> wrote:
> > > diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
> > > index 5953a77bd6..dbaa14f262 100644
> > > --- a/lib/dmadev/rte_dmadev.c
> > > +++ b/lib/dmadev/rte_dmadev.c
> > > @@ -35,8 +35,7 @@ RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
> > > #define RTE_LOGTYPE_DMA rte_dma_logtype
> > >
> > > #define RTE_DMA_LOG(level, ...) \
> > > - RTE_LOG_LINE(level, DMA, RTE_FMT("dma: "
> RTE_FMT_HEAD(__VA_ARGS__
> > > ,), \
> > > - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> > > + RTE_LOG_LINE(level, DMA, "" __VA_ARGS__)
> > >
> > > int
> > > rte_dma_dev_max(size_t dev_max)
> > > diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
> > > index de8291151f..1c2011b856 100644
> > > --- a/lib/gpudev/gpudev.c
> > > +++ b/lib/gpudev/gpudev.c
> > > @@ -20,8 +20,7 @@ RTE_LOG_REGISTER_DEFAULT(gpu_logtype, NOTICE);
> > > #define RTE_LOGTYPE_GPUDEV gpu_logtype
> > >
> > > #define GPU_LOG(level, ...) \
> > > - RTE_LOG_LINE(level, GPUDEV, RTE_FMT("gpu: "
> > > RTE_FMT_HEAD(__VA_ARGS__ ,), \
> > > - RTE_FMT_TAIL(__VA_ARGS__ ,)))
> > > + RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
> >
> > Suggestion:
> > GPUDEV -> GPU, like DMA, not DMADEV.
>
> I had not checked before, but for consistency, I would go the other way
> around.
Consistency is the goal. Either way is fine with me.
It seems with DEV is more common, so +1 to David's suggestion.
>
> $ for dir in lib/*dev; do git grep RTE_LOG_LINE $dir; done
> lib/bbdev/rte_bbdev.c: RTE_LOG_LINE(level, BBDEV, "" __VA_ARGS__)
> lib/compressdev/rte_compressdev_internal.h: RTE_LOG_LINE(level,
> COMPRESSDEV, "%s(): " fmt, __func__, ## args)
> lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(ERR, CRYPTODEV, \
> lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(INFO, CRYPTODEV, ""
> __VA_ARGS__)
> lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(DEBUG, CRYPTODEV, \
> lib/cryptodev/rte_cryptodev.h: RTE_LOG_LINE(DEBUG, CRYPTODEV, \
> lib/dmadev/rte_dmadev.c: RTE_LOG_LINE(level, DMA, ""
> __VA_ARGS__)
> lib/ethdev/rte_ethdev.h: RTE_LOG_LINE(level, ETHDEV, ""
> __VA_ARGS__)
> lib/eventdev/eventdev_pmd.h: RTE_LOG_LINE(ERR, EVENTDEV, \
> lib/eventdev/eventdev_pmd.h: RTE_LOG_LINE(DEBUG, EVENTDEV, \
> lib/eventdev/rte_event_timer_adapter.c: RTE_LOG_LINE(level, logtype, \
> lib/gpudev/gpudev.c: RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
> lib/mldev/rte_mldev.h: RTE_LOG_LINE(level, MLDEV, "%s(): " fmt,
> __func__, ##args)
> lib/rawdev/rte_rawdev_pmd.h: RTE_LOG_LINE(level, RAWDEV, "%s(): "
> fmt, __func__, ##args)
> lib/regexdev/rte_regexdev.h: RTE_LOG_LINE(level, REGEXDEV, ""
> __VA_ARGS__)
>
>
> --
> David Marchand
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] lib: remove duplicate prefix in logs
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
` (3 preceding siblings ...)
2024-01-25 3:06 ` fengchengwen
@ 2024-01-25 12:55 ` David Marchand
2024-02-01 8:53 ` David Marchand
4 siblings, 1 reply; 10+ messages in thread
From: David Marchand @ 2024-01-25 12:55 UTC (permalink / raw)
To: dev
Cc: Thomas Monjalon, Morten Brørup, Ciara Power, Chengwen Feng,
Kevin Laatz, Bruce Richardson, Elena Agostini, Jerin Jacob,
Kiran Kumar K, Nithin Dabilpuram, Zhirun Yan, Pavan Nikhilesh,
Maxime Coquelin, Chenbo Xia, Andrew Rybchenko
RTE_LOG() macros prefixe the log messages based on the logtype.
This results in logs like:
TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
TMTY: TELEMETRY: Socket creation and binding ok
TMTY: TELEMETRY: Telemetry initialized ok
Remove redundancy in some libraries following their conversion to
RTE_LOG/RTE_LOG_LINE.
Note: for consistency, dmadev logs are now prefixed with "DMADEV: "
instead of a too generic "dma: ".
Fixes: 97433132c2ed ("lib: use per line logging in helpers")
Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
Reported-by: Thomas Monjalon <thomas@monjalon.net>
Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Ciara Power <ciara.power@intel.com>
Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
---
Changes since v1:
- changed lib/dmadev logs prefix to DMADEV,
---
lib/dmadev/rte_dmadev.c | 5 ++---
lib/gpudev/gpudev.c | 3 +--
lib/graph/graph_private.h | 2 +-
lib/node/node_private.h | 2 +-
lib/telemetry/telemetry.c | 4 ++--
lib/vhost/vhost.h | 6 +++---
6 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/lib/dmadev/rte_dmadev.c b/lib/dmadev/rte_dmadev.c
index 5953a77bd6..67434c805f 100644
--- a/lib/dmadev/rte_dmadev.c
+++ b/lib/dmadev/rte_dmadev.c
@@ -32,11 +32,10 @@ static struct {
} *dma_devices_shared_data;
RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
-#define RTE_LOGTYPE_DMA rte_dma_logtype
+#define RTE_LOGTYPE_DMADEV rte_dma_logtype
#define RTE_DMA_LOG(level, ...) \
- RTE_LOG_LINE(level, DMA, RTE_FMT("dma: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
- RTE_FMT_TAIL(__VA_ARGS__ ,)))
+ RTE_LOG_LINE(level, DMADEV, "" __VA_ARGS__)
int
rte_dma_dev_max(size_t dev_max)
diff --git a/lib/gpudev/gpudev.c b/lib/gpudev/gpudev.c
index de8291151f..1c2011b856 100644
--- a/lib/gpudev/gpudev.c
+++ b/lib/gpudev/gpudev.c
@@ -20,8 +20,7 @@ RTE_LOG_REGISTER_DEFAULT(gpu_logtype, NOTICE);
#define RTE_LOGTYPE_GPUDEV gpu_logtype
#define GPU_LOG(level, ...) \
- RTE_LOG_LINE(level, GPUDEV, RTE_FMT("gpu: " RTE_FMT_HEAD(__VA_ARGS__ ,), \
- RTE_FMT_TAIL(__VA_ARGS__ ,)))
+ RTE_LOG_LINE(level, GPUDEV, "" __VA_ARGS__)
/* Set any driver error as EPERM */
#define GPU_DRV_RET(function) \
diff --git a/lib/graph/graph_private.h b/lib/graph/graph_private.h
index f9274ce96c..fb88d4bc84 100644
--- a/lib/graph/graph_private.h
+++ b/lib/graph/graph_private.h
@@ -22,7 +22,7 @@ extern int rte_graph_logtype;
#define GRAPH_LOG(level, ...) \
RTE_LOG_LINE(level, GRAPH, \
- RTE_FMT("GRAPH: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
+ RTE_FMT("%s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
__func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__ ,)))
#define graph_err(...) GRAPH_LOG(ERR, __VA_ARGS__)
diff --git a/lib/node/node_private.h b/lib/node/node_private.h
index 845fdaa12e..73563e4cd2 100644
--- a/lib/node/node_private.h
+++ b/lib/node/node_private.h
@@ -15,7 +15,7 @@ extern int rte_node_logtype;
#define NODE_LOG(level, node_name, ...) \
RTE_LOG_LINE(level, NODE, \
- RTE_FMT("NODE %s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
+ RTE_FMT("%s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
node_name, __func__, __LINE__, \
RTE_FMT_TAIL(__VA_ARGS__ ,)))
diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
index 31e2391867..47846ef868 100644
--- a/lib/telemetry/telemetry.c
+++ b/lib/telemetry/telemetry.c
@@ -56,8 +56,8 @@ static const char *socket_dir; /* runtime directory */
static rte_cpuset_t *thread_cpuset;
RTE_LOG_REGISTER_DEFAULT(logtype, WARNING);
-#define RTE_LOGTYPE_TMTY logtype
-#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TMTY, "TELEMETRY: " __VA_ARGS__)
+#define RTE_LOGTYPE_TELEMETRY logtype
+#define TMTY_LOG_LINE(l, ...) RTE_LOG_LINE(l, TELEMETRY, "" __VA_ARGS__)
/* list of command callbacks, with one command registered by default */
static struct cmd_callback *callbacks;
diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
index 470dadbba6..0b13374980 100644
--- a/lib/vhost/vhost.h
+++ b/lib/vhost/vhost.h
@@ -678,10 +678,10 @@ extern int vhost_data_log_level;
#define RTE_LOGTYPE_VHOST_DATA vhost_data_log_level
#define VHOST_CONFIG_LOG(prefix, level, fmt, args...) \
- RTE_LOG_LINE(level, VHOST_CONFIG, "VHOST_CONFIG: (%s) " fmt, prefix, ##args)
+ RTE_LOG_LINE(level, VHOST_CONFIG, "(%s) " fmt, prefix, ##args)
#define VHOST_DATA_LOG(prefix, level, fmt, args...) \
- RTE_LOG_DP_LINE(level, VHOST_DATA, "VHOST_DATA: (%s) " fmt, prefix, ##args)
+ RTE_LOG_DP_LINE(level, VHOST_DATA, "(%s) " fmt, prefix, ##args)
#ifdef RTE_LIBRTE_VHOST_DEBUG
#define VHOST_MAX_PRINT_BUFF 6072
@@ -700,7 +700,7 @@ extern int vhost_data_log_level;
} \
snprintf(packet + strnlen(packet, VHOST_MAX_PRINT_BUFF), VHOST_MAX_PRINT_BUFF - strnlen(packet, VHOST_MAX_PRINT_BUFF), "\n"); \
\
- RTE_LOG_DP(DEBUG, VHOST_DATA, "VHOST_DATA: (%s) %s", dev->ifname, packet); \
+ RTE_LOG_DP(DEBUG, VHOST_DATA, "(%s) %s", dev->ifname, packet); \
} while (0)
#else
#define PRINT_PACKET(device, addr, size, header) do {} while (0)
--
2.43.0
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] lib: remove duplicate prefix in logs
2024-01-25 12:55 ` [PATCH v2] " David Marchand
@ 2024-02-01 8:53 ` David Marchand
0 siblings, 0 replies; 10+ messages in thread
From: David Marchand @ 2024-02-01 8:53 UTC (permalink / raw)
To: David Marchand
Cc: dev, Thomas Monjalon, Morten Brørup, Ciara Power,
Chengwen Feng, Kevin Laatz, Bruce Richardson, Elena Agostini,
Jerin Jacob, Kiran Kumar K, Nithin Dabilpuram, Zhirun Yan,
Pavan Nikhilesh, Maxime Coquelin, Chenbo Xia, Andrew Rybchenko
On Thu, Jan 25, 2024 at 1:56 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> RTE_LOG() macros prefixe the log messages based on the logtype.
> This results in logs like:
>
> TMTY: TELEMETRY: Attempting socket bind to path '/run/user/...'
> TMTY: TELEMETRY: Socket creation and binding ok
> TMTY: TELEMETRY: Telemetry initialized ok
>
> Remove redundancy in some libraries following their conversion to
> RTE_LOG/RTE_LOG_LINE.
>
> Note: for consistency, dmadev logs are now prefixed with "DMADEV: "
> instead of a too generic "dma: ".
>
> Fixes: 97433132c2ed ("lib: use per line logging in helpers")
> Fixes: 0e21c7c07d62 ("lib: replace logging helpers")
>
> Reported-by: Thomas Monjalon <thomas@monjalon.net>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
> Acked-by: Morten Brørup <mb@smartsharesystems.com>
> Acked-by: Ciara Power <ciara.power@intel.com>
> Reviewed-by: Chengwen Feng <fengchengwen@huawei.com>
Applied, thanks.
--
David Marchand
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-02-01 8:53 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-24 12:04 [PATCH] lib: remove duplicate prefix in logs David Marchand
2024-01-24 12:17 ` Morten Brørup
2024-01-25 8:13 ` David Marchand
2024-01-25 8:53 ` Morten Brørup
2024-01-24 13:26 ` Bruce Richardson
2024-01-24 13:28 ` Bruce Richardson
2024-01-24 14:39 ` Power, Ciara
2024-01-25 3:06 ` fengchengwen
2024-01-25 12:55 ` [PATCH v2] " David Marchand
2024-02-01 8:53 ` David Marchand
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).