Thread (14 messages) 14 messages, 5 authors, 2021-01-29

Re: [dpdk-dev] [PATCH] app/testpmd: avoid exit without resource release

From: Li, Xiaoyun <hidden>
Date: 2021-01-15 09:21:59

Hi
Actually, you can just type "stty echo" to solve the problem you met.

But anyway, if you want to fix it in DPDK
I think you misunderstood stephan's solution.
You don't need to implement atexit() yourself in eal. It's a common function like exit() in rte_exit().
Then when exit() is called. Each function registered by atexit() will be called in stack order.

The simplest way to solve this problem is to register a function with atexit() in prompt() in each app which uses cmdline.
Then when exit() in rte_exit() is called, the registered clean function will be called directly.

Registering in prompt() is because that prompt() is the function which starts cmdline in each app.

@Stephen Hemminger What do you think of this about atexit() in prompt() in each app?
I understand it's cmdline and rte_exit problem. But atexit needs a function without parameters.
And the cleanup for cmdline is cmdline_stdin_exit(struct cmdline *cl) which needs cmdline as the parameter to restore original terminal setting.
Setting a global value will be too ugly to me.

BRs
Xiaoyun
-----Original Message-----
From: stable <redacted> On Behalf Of Xing, Beilei
Sent: Friday, January 15, 2021 13:50
To: Yu, DapengX <redacted>; Lu, Wenzhuo
[off-list ref]; Iremonger, Bernard [off-list ref]
Cc: Stephen Hemminger <stephen@networkplumber.org>; dev@dpdk.org;
stable@dpdk.org
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] app/testpmd: avoid exit without
resource release
quoted
-----Original Message-----
From: Yu, DapengX <redacted>
Sent: Friday, January 15, 2021 11:29 AM
To: Lu, Wenzhuo <redacted>; Xing, Beilei
[off-list ref]; Iremonger, Bernard
[off-list ref]
Cc: Yu, DapengX <redacted>; Stephen Hemminger
[off-list ref]; dev@dpdk.org; stable@dpdk.org
Subject: RE: [dpdk-dev] [PATCH] app/testpmd: avoid exit without
resource release

Hi Wenzhuo, Beilei, Bernard

I need testpmd app maintainers' comment :
    Do you prefer the simple solution in this patch or Stephen's
comprehensive and generic solution(which will modify librte_cmdline,
testpmd (and maybe rte_exit()))?
The patch just workarounds a specific case, the issue exits in many cases, such
as Rxonly mode and Rxq is 0.
So It's better to investigate how to solve the generic problem according to
Stephen's comments.
quoted
So I can continue resolving the defect.

Thanks!

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Yu, DapengX
Sent: Friday, December 25, 2020 1:09 PM
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: Lu, Wenzhuo <redacted>; Xing, Beilei
[off-list ref]; Iremonger, Bernard
[off-list ref]; dev@dpdk.org; stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] app/testpmd: avoid exit without
resource release

Hi Stephen,

Do you mean this solution?
1. support atexit() in librte_eal, other component can use it to
register a function to be called when rte_exit() is called.
2. in librte_cmdline, use atexit() to register a function to release
resource

I am looking forward to more comments from other maintainers, since
this solution will modify librte_eal and librte_cmdline, but not just testpmd app.


-----Original Message-----
From: Stephen Hemminger [mailto:stephen@networkplumber.org]
Sent: Friday, December 25, 2020 11:03 AM
To: Yu, DapengX <redacted>
Cc: Lu, Wenzhuo <redacted>; Xing, Beilei
[off-list ref]; Iremonger, Bernard
[off-list ref]; dev@dpdk.org; stable@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] app/testpmd: avoid exit without
resource release

On Thu, 24 Dec 2020 11:57:48 +0800
dapengx.yu@intel.com wrote:
quoted
From: YU DAPENG <redacted>

In interactive mode, if testpmd exit by calling rte_exit without
cmdline resource release, terminal will not echo keyboard input. So
add code to just show error message, but not exit testpmd when
unexpected happens on starting packet forwarding in interactive
mode. User
can type "quit"
quoted
to exit testpmd later.

Fixes: 5a8fb55c48ab ("app/testpmd: support unidirectional
configuration")
Cc: stable@dpdk.org

Signed-off-by: YU DAPENG <redacted>
Sounds like a more generic problem with rte_exit and librte_cmdline.
Would it better to fix it in librte_cmdline by adding an atexit() handler.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help