From: Thomas Monjalon <thomas@monjalon.net>
To: dev@dpdk.org
Cc: david.marchand@redhat.com,
Declan Doherty <declan.doherty@intel.com>,
Ciara Power <ciara.power@intel.com>,
Wisam Jaddo <wisamm@nvidia.com>,
Xiaoyun Li <xiaoyun.li@intel.com>, Ori Kam <orika@nvidia.com>
Subject: [dpdk-dev] [PATCH 08/11] app: fix exit messages
Date: Wed, 10 Mar 2021 00:31:12 +0100 [thread overview]
Message-ID: <20210309233116.1934666-9-thomas@monjalon.net> (raw)
In-Reply-To: <20210309233116.1934666-1-thomas@monjalon.net>
Some applications were printing useless messages with rte_exit()
after showing the help. Using exit() is enough in this case.
Some applications were using a redundant printf or fprintf() before
calling rte_exit(). The messages are unified in a single rte_exit().
Some rte_exit() calls were missing a line feed or returning a wrong code.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
.../comp_perf_options_parse.c | 2 +-
app/test-crypto-perf/cperf_options_parsing.c | 2 +-
app/test-flow-perf/main.c | 59 +++++++++----------
app/test-pmd/parameters.c | 4 +-
app/test-regex/main.c | 3 +-
5 files changed, 33 insertions(+), 37 deletions(-)
diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c
index 04a8d2fbee..019eddb7bd 100644
--- a/app/test-compress-perf/comp_perf_options_parse.c
+++ b/app/test-compress-perf/comp_perf_options_parse.c
@@ -620,7 +620,7 @@ comp_perf_options_parse(struct comp_test_data *test_data, int argc, char **argv)
switch (opt) {
case 'h':
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Displayed help\n");
+ exit(EXIT_SUCCESS);
break;
/* long options */
case 0:
diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c
index 0466f7baf8..40b6dfb648 100644
--- a/app/test-crypto-perf/cperf_options_parsing.c
+++ b/app/test-crypto-perf/cperf_options_parsing.c
@@ -983,7 +983,7 @@ cperf_options_parse(struct cperf_options *options, int argc, char **argv)
switch (opt) {
case 'h':
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Displayed help\n");
+ exit(EXIT_SUCCESS);
break;
/* long options */
case 0:
diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c
index 99d0463456..0aef767350 100644
--- a/app/test-flow-perf/main.c
+++ b/app/test-flow-perf/main.c
@@ -639,7 +639,7 @@ args_parse(int argc, char **argv)
case 0:
if (strcmp(lgopts[opt_idx].name, "help") == 0) {
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Displayed help\n");
+ exit(EXIT_SUCCESS);
}
if (strcmp(lgopts[opt_idx].name, "group") == 0) {
@@ -647,7 +647,7 @@ args_parse(int argc, char **argv)
if (n >= 0)
flow_group = n;
else
- rte_exit(EXIT_SUCCESS,
+ rte_exit(EXIT_FAILURE,
"flow group should be >= 0\n");
printf("group %d / ", flow_group);
}
@@ -667,7 +667,7 @@ args_parse(int argc, char **argv)
if (n > 0)
hairpin_queues_num = n;
else
- rte_exit(EXIT_SUCCESS,
+ rte_exit(EXIT_FAILURE,
"Hairpin queues should be > 0\n");
flow_actions[actions_idx++] =
@@ -680,7 +680,7 @@ args_parse(int argc, char **argv)
if (n > 0)
hairpin_queues_num = n;
else
- rte_exit(EXIT_SUCCESS,
+ rte_exit(EXIT_FAILURE,
"Hairpin queues should be > 0\n");
flow_actions[actions_idx++] =
@@ -704,11 +704,9 @@ args_parse(int argc, char **argv)
break;
}
/* Reached last item with no match */
- if (i == (RTE_DIM(flow_options) - 1)) {
- fprintf(stderr, "Invalid encap item: %s\n", token);
- usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Invalid encap item\n");
- }
+ if (i == (RTE_DIM(flow_options) - 1))
+ rte_exit(EXIT_FAILURE,
+ "Invalid encap item: %s\n", token);
}
token = strtok(NULL, ",");
}
@@ -730,11 +728,9 @@ args_parse(int argc, char **argv)
break;
}
/* Reached last item with no match */
- if (i == (RTE_DIM(flow_options) - 1)) {
- fprintf(stderr, "Invalid decap item: %s\n", token);
- usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Invalid decap item\n");
- }
+ if (i == (RTE_DIM(flow_options) - 1))
+ rte_exit(EXIT_FAILURE,
+ "Invalid decap item %s\n", token);
}
token = strtok(NULL, ",");
}
@@ -747,9 +743,9 @@ args_parse(int argc, char **argv)
if (n >= DEFAULT_RULES_BATCH)
rules_batch = n;
else {
- printf("\n\nrules_batch should be >= %d\n",
+ rte_exit(EXIT_FAILURE,
+ "rules_batch should be >= %d\n",
DEFAULT_RULES_BATCH);
- rte_exit(EXIT_SUCCESS, " ");
}
}
if (strcmp(lgopts[opt_idx].name,
@@ -758,7 +754,8 @@ args_parse(int argc, char **argv)
if (n >= (int) rules_batch)
rules_count = n;
else {
- printf("\n\nrules_count should be >= %d\n",
+ rte_exit(EXIT_FAILURE,
+ "rules_count should be >= %d\n",
rules_batch);
}
}
@@ -786,23 +783,23 @@ args_parse(int argc, char **argv)
if (strcmp(lgopts[opt_idx].name, "cores") == 0) {
n = atoi(optarg);
if ((int) rte_lcore_count() <= n) {
- printf("\nError: you need %d cores to run on multi-cores\n"
+ rte_exit(EXIT_FAILURE,
+ "Error: you need %d cores to run on multi-cores\n"
"Existing cores are: %d\n", n, rte_lcore_count());
- rte_exit(EXIT_FAILURE, " ");
}
if (n <= RTE_MAX_LCORE && n > 0)
mc_pool.cores_count = n;
else {
- printf("Error: cores count must be > 0 "
- " and < %d\n", RTE_MAX_LCORE);
- rte_exit(EXIT_FAILURE, " ");
+ rte_exit(EXIT_FAILURE,
+ "Error: cores count must be > 0 and < %d\n",
+ RTE_MAX_LCORE);
}
}
break;
default:
- fprintf(stderr, "Invalid option: %s\n", argv[optind]);
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Invalid option\n");
+ rte_exit(EXIT_FAILURE, "Invalid option: %s\n",
+ argv[optind]);
break;
}
}
@@ -936,7 +933,7 @@ create_meter_rule(int port_id, uint32_t counter)
printf("Port %u create meter idx(%d) error(%d) message: %s\n",
port_id, counter, error.type,
error.message ? error.message : "(no stated reason)");
- rte_exit(EXIT_FAILURE, "error in creating meter");
+ rte_exit(EXIT_FAILURE, "Error in creating meter\n");
}
}
@@ -949,7 +946,7 @@ destroy_meter_rule(int port_id, uint32_t counter)
printf("Port %u destroy meter(%d) error(%d) message: %s\n",
port_id, counter, error.type,
error.message ? error.message : "(no stated reason)");
- rte_exit(EXIT_FAILURE, "Error in deleting meter rule");
+ rte_exit(EXIT_FAILURE, "Error in deleting meter rule\n");
}
}
@@ -1097,7 +1094,7 @@ destroy_flows(int port_id, uint8_t core_id, struct rte_flow **flows_list)
memset(&error, 0x33, sizeof(error));
if (rte_flow_destroy(port_id, flows_list[i], &error)) {
print_flow_error(error);
- rte_exit(EXIT_FAILURE, "Error in deleting flow");
+ rte_exit(EXIT_FAILURE, "Error in deleting flow\n");
}
/*
@@ -1160,7 +1157,7 @@ insert_flows(int port_id, uint8_t core_id)
flows_list = rte_zmalloc("flows_list",
(sizeof(struct rte_flow *) * rules_count_per_core) + 1, 0);
if (flows_list == NULL)
- rte_exit(EXIT_FAILURE, "No Memory available!");
+ rte_exit(EXIT_FAILURE, "No Memory available!\n");
cpu_time_used = 0;
flow_index = 0;
@@ -1180,7 +1177,7 @@ insert_flows(int port_id, uint8_t core_id)
if (flow == NULL) {
print_flow_error(error);
- rte_exit(EXIT_FAILURE, "error in creating flow");
+ rte_exit(EXIT_FAILURE, "Error in creating flow\n");
}
flows_list[flow_index++] = flow;
}
@@ -1199,7 +1196,7 @@ insert_flows(int port_id, uint8_t core_id)
if (!flow) {
print_flow_error(error);
- rte_exit(EXIT_FAILURE, "error in creating flow");
+ rte_exit(EXIT_FAILURE, "Error in creating flow\n");
}
flows_list[flow_index++] = flow;
@@ -1517,7 +1514,7 @@ packet_per_second_stats(void)
old = rte_zmalloc("old",
sizeof(struct lcore_info) * RTE_MAX_LCORE, 0);
if (old == NULL)
- rte_exit(EXIT_FAILURE, "No Memory available!");
+ rte_exit(EXIT_FAILURE, "No Memory available!\n");
memcpy(old, lcore_infos,
sizeof(struct lcore_info) * RTE_MAX_LCORE);
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index c8acd5d1b7..55ecea6338 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -632,7 +632,7 @@ launch_args_parse(int argc, char** argv)
case 0: /*long options */
if (!strcmp(lgopts[opt_idx].name, "help")) {
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Displayed help\n");
+ exit(EXIT_SUCCESS);
}
#ifdef RTE_LIB_CMDLINE
if (!strcmp(lgopts[opt_idx].name, "interactive")) {
@@ -1369,7 +1369,7 @@ launch_args_parse(int argc, char** argv)
break;
case 'h':
usage(argv[0]);
- rte_exit(EXIT_SUCCESS, "Displayed help\n");
+ exit(EXIT_SUCCESS);
break;
default:
usage(argv[0]);
diff --git a/app/test-regex/main.c b/app/test-regex/main.c
index aea4fa6b88..7bb87bb1b8 100644
--- a/app/test-regex/main.c
+++ b/app/test-regex/main.c
@@ -154,9 +154,8 @@ args_parse(int argc, char **argv, char *rules_file, char *data_file,
usage("RegEx test app");
break;
default:
- fprintf(stderr, "Invalid option: %s\n", argv[optind]);
usage("RegEx test app");
- rte_exit(EXIT_FAILURE, "Invalid option\n");
+ rte_exit(EXIT_FAILURE, "Invalid option: %s\n", argv[optind]);
break;
}
}
--
2.30.1
next prev parent reply other threads:[~2021-03-09 23:32 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-09 23:31 [dpdk-dev] [PATCH 00/11] improve options help Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 01/11] eal: explain argv behaviour during init Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 02/11] eal: improve options usage text Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 03/11] eal: use macros for help option Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 04/11] eal: move private log functions Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 05/11] eal: introduce maximum log level macro Thomas Monjalon
2021-03-10 12:46 ` Thomas Monjalon
2021-03-09 23:31 ` [dpdk-dev] [PATCH 06/11] eal: catch invalid log level number Thomas Monjalon
2021-03-10 12:19 ` Bruce Richardson
2021-03-10 12:33 ` Thomas Monjalon
2021-03-10 13:26 ` Bruce Richardson
2021-03-10 13:35 ` Thomas Monjalon
2021-03-10 16:35 ` Morten Brørup
2021-03-10 16:52 ` Bruce Richardson
2021-03-10 15:16 ` Stephen Hemminger
2021-03-09 23:31 ` [dpdk-dev] [PATCH 07/11] eal: add log level help Thomas Monjalon
2023-06-29 16:22 ` Stephen Hemminger
2021-03-09 23:31 ` Thomas Monjalon [this message]
2021-03-10 7:10 ` [dpdk-dev] [PATCH 08/11] app: fix exit messages Ori Kam
2021-03-10 9:23 ` Wisam Monther
2021-03-09 23:31 ` [dpdk-dev] [PATCH 09/11] app: hook in EAL usage help Thomas Monjalon
2021-03-10 9:25 ` Wisam Monther
2021-03-09 23:31 ` [dpdk-dev] [PATCH 10/11] app/regex: fix usage text Thomas Monjalon
2021-03-10 7:08 ` Ori Kam
2021-03-09 23:31 ` [dpdk-dev] [PATCH 11/11] app/testpmd: " Thomas Monjalon
2021-03-12 19:09 ` Ajit Khaparde
2021-03-10 0:45 ` [dpdk-dev] [PATCH 00/11] improve options help Stephen Hemminger
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 " Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 01/11] eal: explain argv behaviour during init Thomas Monjalon
2023-06-30 16:23 ` Stephen Hemminger
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 02/11] eal: improve options usage text Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 03/11] eal: use macros for help option Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 04/11] eal: move private log functions Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 05/11] eal: introduce maximum log level macro Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 06/11] eal: catch invalid log level number Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 07/11] eal: add log level help Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 08/11] app: fix exit messages Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 09/11] app: hook in EAL usage help Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 10/11] app/regex: fix usage text Thomas Monjalon
2021-03-10 13:28 ` [dpdk-dev] [PATCH v2 11/11] app/testpmd: " Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 00/11] improve options help Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 01/11] eal: explain argv behaviour during init Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 02/11] eal: improve options usage text Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 03/11] eal: use macros for help option Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 04/11] eal: move private log functions Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 05/11] eal: introduce maximum log level macro Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 06/11] eal: catch invalid log level number Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 07/11] eal: add log level help Thomas Monjalon
2021-03-15 10:19 ` Kinsella, Ray
2021-03-15 10:31 ` Bruce Richardson
2021-03-15 10:42 ` Kinsella, Ray
2021-03-15 10:52 ` Thomas Monjalon
2021-03-15 15:59 ` Stephen Hemminger
2021-03-15 17:01 ` Kinsella, Ray
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 08/11] app: fix exit messages Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 09/11] app: hook in EAL usage help Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 10/11] app/regex: fix usage text Thomas Monjalon
2021-03-12 18:17 ` [dpdk-dev] [PATCH v3 11/11] app/testpmd: " Thomas Monjalon
2021-03-19 8:59 ` Li, Xiaoyun
2021-03-19 9:29 ` Thomas Monjalon
2021-03-15 9:40 ` [dpdk-dev] [PATCH v3 00/11] improve options help Bruce Richardson
2021-03-15 10:47 ` Andrew Rybchenko
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 " Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 01/11] eal: explain argv behaviour during init Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 02/11] eal: improve options usage text Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 03/11] eal: use macros for help option Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 04/11] eal: move private log functions Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 05/11] eal: introduce maximum log level macro Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 06/11] eal: catch invalid log level number Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 07/11] eal: add log level help Thomas Monjalon
2021-03-23 13:37 ` David Marchand
2021-03-23 15:10 ` Thomas Monjalon
2021-03-23 18:18 ` David Marchand
2021-03-23 18:41 ` Thomas Monjalon
2021-03-24 13:41 ` David Marchand
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 08/11] app: fix exit messages Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 09/11] app: hook in EAL usage help Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 10/11] app/regex: fix usage text Thomas Monjalon
2021-03-21 22:31 ` [dpdk-dev] [PATCH v4 11/11] app/testpmd: " Thomas Monjalon
2021-03-22 1:45 ` Li, Xiaoyun
2021-03-22 8:27 ` Jens Freimann
2021-03-22 9:05 ` Bing Zhao
2021-03-24 15:03 ` [dpdk-dev] [PATCH v4 00/11] improve options help David Marchand
2021-03-24 16:55 ` Thomas Monjalon
2021-04-05 19:29 ` [dpdk-dev] [PATCH v5 0/4] log level enhancements Thomas Monjalon
2021-04-05 19:29 ` [dpdk-dev] [PATCH v5 1/4] log: move private functions Thomas Monjalon
2021-04-06 11:28 ` David Marchand
2021-04-06 12:08 ` Thomas Monjalon
2021-04-05 19:29 ` [dpdk-dev] [PATCH v5 2/4] log: introduce macro for maximum level Thomas Monjalon
2021-04-05 19:29 ` [dpdk-dev] [PATCH v5 3/4] log: catch invalid level option number Thomas Monjalon
2021-04-05 19:30 ` [dpdk-dev] [PATCH v5 4/4] log: add option argument help Thomas Monjalon
2021-04-06 13:11 ` [dpdk-dev] [PATCH v6 0/4] log level enhancements Thomas Monjalon
2021-04-06 13:11 ` [dpdk-dev] [PATCH v6 1/4] log: move private functions Thomas Monjalon
2021-04-06 13:11 ` [dpdk-dev] [PATCH v6 2/4] log: introduce macro for maximum level Thomas Monjalon
2021-04-06 14:32 ` David Marchand
2021-04-06 13:11 ` [dpdk-dev] [PATCH v6 3/4] log: catch invalid level option number Thomas Monjalon
2021-04-06 14:35 ` David Marchand
2021-04-06 13:11 ` [dpdk-dev] [PATCH v6 4/4] log: add option argument help Thomas Monjalon
2021-04-06 14:28 ` David Marchand
2021-04-06 14:58 ` Thomas Monjalon
2021-04-06 16:04 ` Thomas Monjalon
2021-04-06 16:35 ` David Marchand
2021-04-08 16:47 ` [dpdk-dev] [PATCH v7 0/4] log level enhancements Thomas Monjalon
2021-04-08 16:47 ` [dpdk-dev] [PATCH v7 1/4] log: move private functions Thomas Monjalon
2021-04-08 16:47 ` [dpdk-dev] [PATCH v7 2/4] log: introduce macro for maximum level Thomas Monjalon
2021-04-08 16:47 ` [dpdk-dev] [PATCH v7 3/4] log: catch invalid level option number Thomas Monjalon
2021-04-08 16:47 ` [dpdk-dev] [PATCH v7 4/4] log: add option argument help Thomas Monjalon
2021-04-09 9:31 ` David Marchand
2021-04-13 16:55 ` Kinsella, Ray
2021-04-09 10:55 ` [dpdk-dev] [PATCH v7 0/4] log level enhancements David Marchand
2021-04-05 19:33 ` [dpdk-dev] [PATCH v5 0/3] cleanup exit and usage messages in apps Thomas Monjalon
2021-04-05 19:33 ` [dpdk-dev] [PATCH v5 1/3] app: fix exit messages Thomas Monjalon
2021-04-05 19:33 ` [dpdk-dev] [PATCH v5 2/3] app/regex: fix usage text Thomas Monjalon
2021-04-05 19:33 ` [dpdk-dev] [PATCH v5 3/3] app/testpmd: " Thomas Monjalon
2021-04-09 12:31 ` [dpdk-dev] [PATCH v5 0/3] cleanup exit and usage messages in apps David Marchand
2021-04-05 19:39 ` [dpdk-dev] [PATCH v5 0/4] improve options help Thomas Monjalon
2021-04-05 19:39 ` [dpdk-dev] [PATCH v5 1/4] eal: explain argv behaviour during init Thomas Monjalon
2023-07-05 16:51 ` Stephen Hemminger
2021-04-05 19:39 ` [dpdk-dev] [PATCH v5 2/4] eal: improve options usage text Thomas Monjalon
2023-07-06 18:45 ` Stephen Hemminger
2024-03-18 22:11 ` Stephen Hemminger
2021-04-05 19:39 ` [dpdk-dev] [PATCH v5 3/4] eal: use macros for help option Thomas Monjalon
2023-07-05 16:52 ` Stephen Hemminger
2021-04-05 19:39 ` [dpdk-dev] [PATCH v5 4/4] app: hook in EAL usage help Thomas Monjalon
2021-04-06 13:32 ` Jerin Jacob
2021-04-06 14:05 ` Thomas Monjalon
2021-04-06 14:13 ` Jerin Jacob
2024-04-29 16:24 ` Stephen Hemminger
2024-09-25 17:53 ` Stephen Hemminger
2023-06-29 16:27 ` [dpdk-dev] [PATCH v5 0/4] improve options help Stephen Hemminger
2023-07-06 8:29 ` Thomas Monjalon
2023-07-06 14:44 ` Stephen Hemminger
2023-07-06 15:53 ` Thomas Monjalon
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=20210309233116.1934666-9-thomas@monjalon.net \
--to=thomas@monjalon.net \
--cc=ciara.power@intel.com \
--cc=david.marchand@redhat.com \
--cc=declan.doherty@intel.com \
--cc=dev@dpdk.org \
--cc=orika@nvidia.com \
--cc=wisamm@nvidia.com \
--cc=xiaoyun.li@intel.com \
/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).