[dpdk-dev,v4] distributor_app: gracefull shutdown of tx/rx threads on SIGINT
Commit Message
Self-NAK.
Reason: Incomplete patch.
Will send updated next version soon.
-----Original Message-----
From: Pattan, Reshma
Sent: Wednesday, October 1, 2014 2:34 PM
To: dev@dpdk.org
Cc: Pattan, Reshma
Subject: [PATCH v4] distributor_app: gracefull shutdown of tx/rx threads on SIGINT
From: Reshma Pattan <reshma.pattan@intel.com>
*Handled gracefull shutdown of rx and tx threads upon SIGINT.
*Gracefull shutdown of worker threads will be handled in
future enhancements.
Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
examples/distributor_app/main.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
}
printf("\nCore %u doing packet TX.\n", rte_lcore_id());
- for (;;) {
+ while (!quit_signal) {
for (port = 0; port < nb_ports; port++) {
/* skip ports that are not enabled */
if ((enabled_port_mask & (1 << port)) == 0) @@ -370,7 +371,6 @@ lcore_tx(struct rte_ring *in_r)
}
}
-
static __attribute__((noreturn)) void
lcore_worker(struct lcore_params *p)
{
@@ -415,7 +415,7 @@ int_handler(int sig_num)
printf(" - Out Errs: %"PRIu64"\n", eth_stats.oerrors);
printf(" - Mbuf Errs: %"PRIu64"\n", eth_stats.rx_nombuf);
}
- exit(0);
+ quit_signal = 1;
}
/* display usage */
--
1.7.4.1
--------------------------------------------------------------
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare
This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.
@@ -85,6 +85,7 @@
/* mask of enabled ports */
static uint32_t enabled_port_mask = 0;
+volatile uint8_t quit_signal = 0;
static volatile struct app_stats {
struct {
@@ -221,7 +222,7 @@ struct lcore_params {
struct rte_ring *r;
};
-static __attribute__((noreturn)) void
+static int
lcore_rx(struct lcore_params *p)
{
struct rte_distributor *d = p->d;
@@ -244,7 +245,7 @@ lcore_rx(struct lcore_params *p)
printf("\nCore %u doing packet RX.\n", rte_lcore_id());
port = 0;
- for (;;) {
+ while (!quit_signal) {
/* skip ports that are not enabled */
if ((enabled_port_mask & (1 << port)) == 0) {
if (++port == nb_ports)
@@ -307,7 +308,7 @@ flush_all_ports(struct output_buffer *tx_buffers, uint8_t nb_ports)
}
}
-static __attribute__((noreturn)) void
+static int
lcore_tx(struct rte_ring *in_r)
{
static struct output_buffer tx_buffers[RTE_MAX_ETHPORTS]; @@ -328,7 +329,7 @@ lcore_tx(struct rte_ring *in_r)