> On Wed, 23 Dec 2015 15:03:15 -0500 > Zhihong Wang <zhihong.wang at intel.com> wrote: > > > +/* When we receive a INT signal, close all ports */ static void > > +sigint_handler(__rte_unused int signum) { > > + unsigned portid, nb_ports; > > + > > + printf("Preparing to exit...\n"); > > + nb_ports = rte_eth_dev_count(); > > + for (portid = 0; portid < nb_ports; portid++) { > > + if ((enabled_port_mask & (1 << portid)) == 0) { > > + continue; > > + } > > + printf("Stopping port %d...", portid); > > + rte_eth_dev_stop(portid); > > + rte_eth_dev_close(portid); > > + printf(" Done\n"); > > + } > > + printf("Bye...\n"); > > + exit(0); > > +} > > Signal handlers should only set a flag, which is then checked by thread loops. > Calling functions in DPDK from signal handlers is not safe.
I'll make changes in v2 to address this issue. Thanks for pointing out :) In some cases signal handler have to do the exit though, like when the program is still doing memory initialization and will take some time.