On Fri, 17 Mar 2023 17:20:48 +0100
Olivier Matz <olivier.m...@6wind.com> wrote:

> >  
> > +#ifdef RTE_EXEC_ENV_WINDOWS
> >     signal(SIGINT, signal_handler);
> >     signal(SIGTERM, signal_handler);
> > +#else
> > +   /* Want read() not to be restarted on signal */
> > +   struct sigaction action = {
> > +           .sa_handler = signal_handler,
> > +   };
> > +
> > +   sigaction(SIGINT, &action, NULL);
> > +   sigaction(SIGTERM, &action, NULL);
> > +#endif  
> 
> If we have to change this in testpmd, we'll have to do the same in other
> applications.

The only a couple other program combining signal() and cmdline_interact().
These programs all exit from signal handler and never return from it.

In examples/ntb, the program is using the signal suicide (lets kill myself)
model, which will work.  Not sure why it bothers just to print a message.

In examples/vdpa, the program is trapping signal and calling close on ports.
This is not signal safe, but that is up to the vdpa maintainers to address.

Also, examples/vm_power_management is calling channel_XXX_exit() routines
which is not signal safe. Ditto, need the maintainers to address that.

> > +__rte_experimental
> > +void cmdline_cancel(struct cmdline *cl);
> > +  
> 
> The help says this function causes the read() in cmdline_interact to
> exit, but the unix implementation is empty.
> 
> Maybe we should instead explain in what condition this function must
> called. Also, shouldn't this function call cmdline_quit() too to avoid
> the user to do it?

Prefer to have function not to do implicit quit.

PS: cmdline functions need better documentation.

Reply via email to