Hi Kirill, This patch is pending for review from long time. Please do let me know if any comments on this patch, else will request to merge it.
Regards, Rahul > -----Original Message----- > From: Rahul Bhansali > Sent: Monday, May 15, 2023 4:29 PM > To: 'Kirill Rybalchenko' <kirill.rybalche...@intel.com>; Thomas Monjalon > <tho...@monjalon.net> > Cc: 'dev@dpdk.org' <dev@dpdk.org> > Subject: RE: [PATCH] examples/ptpclient: add signal handler for cleanup > > Ping. > > > -----Original Message----- > > From: Rahul Bhansali > > Sent: Friday, January 20, 2023 11:26 AM > > To: 'dev@dpdk.org' <dev@dpdk.org>; 'Kirill Rybalchenko' > > <kirill.rybalche...@intel.com> > > Subject: RE: [PATCH] examples/ptpclient: add signal handler for > > cleanup > > > > Ping. > > > > > -----Original Message----- > > > From: Rahul Bhansali > > > Sent: Wednesday, November 2, 2022 10:21 PM > > > To: dev@dpdk.org; Kirill Rybalchenko <kirill.rybalche...@intel.com> > > > Subject: RE: [PATCH] examples/ptpclient: add signal handler for > > > cleanup > > > > > > Ping. > > > > > > > -----Original Message----- > > > > From: Rahul Bhansali <rbhans...@marvell.com> > > > > Sent: Wednesday, August 31, 2022 12:19 PM > > > > To: dev@dpdk.org; Kirill Rybalchenko > > > > <kirill.rybalche...@intel.com> > > > > Cc: Rahul Bhansali <rbhans...@marvell.com> > > > > Subject: [PATCH] examples/ptpclient: add signal handler for > > > > cleanup > > > > > > > > This adds the signal handler for SIGINT, SIGTERM. > > > > Also, this will come out from infinite loop and do cleanup once it > > > > receives any of the registered signal. > > > > > > > > Signed-off-by: Rahul Bhansali <rbhans...@marvell.com> > > > > --- > > > > examples/ptpclient/ptpclient.c | 32 > > > > ++++++++++++++++++++++++++++++-- > > > > 1 file changed, 30 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/examples/ptpclient/ptpclient.c > > > > b/examples/ptpclient/ptpclient.c index 1f1c9c9c52..8b69716be1 > > > > 100644 > > > > --- a/examples/ptpclient/ptpclient.c > > > > +++ b/examples/ptpclient/ptpclient.c > > > > @@ -19,6 +19,9 @@ > > > > #include <limits.h> > > > > #include <sys/time.h> > > > > #include <getopt.h> > > > > +#include <signal.h> > > > > + > > > > +static volatile bool force_quit; > > > > > > > > #define RX_RING_SIZE 1024 > > > > #define TX_RING_SIZE 1024 > > > > @@ -609,7 +612,7 @@ parse_ptp_frames(uint16_t portid, struct > > > > rte_mbuf > > > > *m) { > > > > * The lcore main. This is the main thread that does the work, > > > > reading from > > an > > > > * input port and writing to an output port. > > > > */ > > > > -static __rte_noreturn void > > > > +static void > > > > lcore_main(void) > > > > { > > > > uint16_t portid; > > > > @@ -621,7 +624,7 @@ lcore_main(void) > > > > > > > > /* Run until the application is quit or killed. */ > > > > > > > > - while (1) { > > > > + while (!force_quit) { > > > > /* Read packet from RX queues. 8< */ > > > > for (portid = 0; portid < ptp_enabled_port_nb; > > > > portid++) { > > > > > > > > @@ -734,6 +737,13 @@ ptp_parse_args(int argc, char **argv) > > > > return 0; > > > > } > > > > > > > > +static void > > > > +signal_handler(int signum) > > > > +{ > > > > + if (signum == SIGINT || signum == SIGTERM) > > > > + force_quit = true; > > > > +} > > > > + > > > > /* > > > > * The main function, which does initialization and calls the per-lcore > > > > * functions. > > > > @@ -758,6 +768,10 @@ main(int argc, char *argv[]) > > > > argc -= ret; > > > > argv += ret; > > > > > > > > + force_quit = false; > > > > + signal(SIGINT, signal_handler); > > > > + signal(SIGTERM, signal_handler); > > > > + > > > > ret = ptp_parse_args(argc, argv); > > > > if (ret < 0) > > > > rte_exit(EXIT_FAILURE, "Error with PTP > > > > initialization\n"); @@ - > > > > 802,6 +816,20 @@ main(int argc, char *argv[]) > > > > /* Call lcore_main on the main core only. */ > > > > lcore_main(); > > > > > > > > + RTE_ETH_FOREACH_DEV(portid) { > > > > + if ((ptp_enabled_port_mask & (1 << portid)) == 0) > > > > + continue; > > > > + > > > > + /* Disable timesync timestamping for the Ethernet > > > > device */ > > > > + rte_eth_timesync_disable(portid); > > > > + > > > > + ret = rte_eth_dev_stop(portid); > > > > + if (ret != 0) > > > > + printf("rte_eth_dev_stop: err=%d, port=%d\n", > > > > ret, > > > > portid); > > > > + > > > > + rte_eth_dev_close(portid); > > > > + } > > > > + > > > > /* clean up the EAL */ > > > > rte_eal_cleanup(); > > > > > > > > -- > > > > 2.25.1