rte_exit() does not terminate the program -- is it a bug or a new feature?

Gabor LENCSE lencse at hit.bme.hu
Sun Sep 17 21:37:30 CEST 2023


Dear Stephen,

Thank you very much for your answer. Please see my answers inline.

> Not sure what the tx and rx polling loops look like in your application.

In short: they surely finish.

In more details:
- The receivers finish due to timeout. In my case the receiving threads 
finished OK. (Their CPU cores became idle.)
- The sender threads check if sending happened within timeout time only 
AFTER all test frames were sent, that is, the sending loop finished. (It 
is done so to spare 1 branch instruction in the innermost sending loop.) 
So the sending loop is already finished when the rte_exit() is called. 
*My problem is that calling the rte_exit() function does not terminate 
the application.*

> But they need to have some way of forcing exit, and you need to set that
> flag before calling rte_exit().
>
> See l2fwd and force_quit flag for an example.

I have looked into its source code. I understand that it sets the 
"force_quit" flag when it receives a SIGINT or SIGTERM signal, and the 
nonzero value of the  "force_quit" flag causes to finish the while cycle 
of the "l2fwd_main_loop(void)".

However, l2fwd also uses the "rte_exit()" function to terminate the 
program. The only difference is that it calls the "rte_exit()" function 
from the main program, and I do so in a thread started by the 
"rte_eal_remote_launch()" function.

Is there any constraint for usage the "rte_eal_remote_launch()" 
function? (E.g., it may be called only from the main thread? I did not 
see anything like that int the documentation.)

Best regards,

Gábor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mails.dpdk.org/archives/users/attachments/20230917/99784ccc/attachment.htm>


More information about the users mailing list