eal: add rte_exit() main lcore limitation description

Message ID 20210714141300.15280-1-suanmingm@nvidia.com (mailing list archive)
State Changes Requested, archived
Delegated to: David Marchand
Headers
Series eal: add rte_exit() main lcore limitation description |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot success github build: passed
ci/Intel-compilation success Compilation OK
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Performance fail Performance Testing issues
ci/intel-Testing success Testing PASS

Commit Message

Suanming Mou July 14, 2021, 2:13 p.m. UTC
  Currently, rte_eal_mp_wait_lcore() function will be called by rte_exit()
as the routine below:
rte_exit() -> rte_eal_cleanup() -> rte_service_finalize() ->
rte_eal_mp_wait_lcore()

As rte_eal_mp_wait_lcore() is announced can only be called from main lcore,
rte_exit() gets the limitation implicitly as well. Or once rte_exit() is
called from a worker core, the rte_exit() procedure will get stuck in the
rte_eal_mp_wait_lcore() function as the core status is still running.

This commit adds the limitation to rte_exit() to make things clear.

Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
---
 lib/eal/include/rte_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Stephen Hemminger June 30, 2023, 3:37 a.m. UTC | #1
On Wed, 14 Jul 2021 17:13:00 +0300
Suanming Mou <suanmingm@nvidia.com> wrote:

> Currently, rte_eal_mp_wait_lcore() function will be called by rte_exit()
> as the routine below:
> rte_exit() -> rte_eal_cleanup() -> rte_service_finalize() ->
> rte_eal_mp_wait_lcore()
> 
> As rte_eal_mp_wait_lcore() is announced can only be called from main lcore,
> rte_exit() gets the limitation implicitly as well. Or once rte_exit() is
> called from a worker core, the rte_exit() procedure will get stuck in the
> rte_eal_mp_wait_lcore() function as the core status is still running.
> 
> This commit adds the limitation to rte_exit() to make things clear.
> 
> Signed-off-by: Suanming Mou <suanmingm@nvidia.com>

This patch has had no response in almost two years.
The root cause of the problem is a the assumption in the service library.
That is a bug and should be filed against rte_service, not by having a
caveat in documentation that no one will read anyway.
  

Patch

diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index d5a32c66a5..ebe2869cc3 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -857,7 +857,7 @@  rte_str_to_size(const char *str)
  * Function to terminate the application immediately, printing an error
  * message and returning the exit_code back to the shell.
  *
- * This function never returns
+ * To be executed on the MAIN lcore only. This function never returns.
  *
  * @param exit_code
  *     The exit code to be returned by the application