On Thu, Oct 8, 2020 at 5:31 PM <rohit....@nxp.com> wrote: > > From: Rohit Raj <rohit....@nxp.com> > > Certain bus objects may need to be closed and re-acquired > while terminating and rerunning the client application. > Hence a signal handler is required to catch the termination > of the App and hence closing the bus objects. > > This patch adds the missing signal handler in the client > app and closes the Bus objects in both client and server > applications when the signal Handler is called. > > Signed-off-by: Rohit Raj <rohit....@nxp.com> > --- > .../multi_process/client_server_mp/mp_client/client.c | 11 +++++++++++ > .../multi_process/client_server_mp/mp_server/main.c | 4 +++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/examples/multi_process/client_server_mp/mp_client/client.c > b/examples/multi_process/client_server_mp/mp_client/client.c > index 361d90b54..c37516b4c 100644 > --- a/examples/multi_process/client_server_mp/mp_client/client.c > +++ b/examples/multi_process/client_server_mp/mp_client/client.c > @@ -11,6 +11,7 @@ > #include <stdlib.h> > #include <getopt.h> > #include <string.h> > +#include <signal.h> > > #include <rte_common.h> > #include <rte_malloc.h> > @@ -196,6 +197,14 @@ handle_packet(struct rte_mbuf *buf) > > } > > +static void > +signal_handler(int signal) > +{ > + if (signal == SIGINT) > + rte_eal_cleanup(); > + exit(0); > +}
Calling rte_eal_cleanup from a signal handler is a bad idea. In most cases, you are racing with other threads still using DPDK resources. https://git.dpdk.org/dpdk/commit?id=2c434431f4 https://git.dpdk.org/dpdk/commit?id=613ce6691c This might not be a problem in this multi_process example, but let's keep a consistent way across all examples. Thanks. -- David Marchand