All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>
Subject: Re: [PATCH v2] perf tools: Make Ctrl-C stop processing on TUI
Date: Fri, 29 May 2015 10:24:37 -0300	[thread overview]
Message-ID: <20150529132437.GQ24859@kernel.org> (raw)
In-Reply-To: <1432904024-13170-1-git-send-email-namhyung@kernel.org>

Em Fri, May 29, 2015 at 09:53:44PM +0900, Namhyung Kim escreveu:
> It was inconvenient that perf cannot be quit with SIGINT during
> processing samples on TUI especially for large data files.
> 
> This was because the first argument of SLang_init_tty(), abort_char,
> being 0.  The manual says it's the ascii value of the control
> character that will be used to generate the interrupt signal [1].
> Passing -1 means to use the default value (Ctrl-C).
> 
> However, after processing samples, Ctrl-C was used to in other cases as
> well - like stepping back from annotate.  So recover the original
> behavior after processing.

Right, but the way this was implemented it is error prone, I think...

I.e. better would be to enclose whatever section of code we want to be
able to interrupt with control+C with something like:

  ui__control_c_terminates(true);

  process events, etc.

  ui__control_c_terminates(false);

Or some more suitable name, couldn't think right now of any that would
reuse something well established...

The way you implemented it, as soon as we implement a new browser, we
will have to recall this detail to have Control+C working as it always
worked on tools/perf, i.e. not terminating it.

- Arnaldo
 
> [1] http://jedsoft.org/slang/doc/html/cslang-6.html#ss6.1
> 
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/perf/ui/browsers/annotate.c | 4 ++++
>  tools/perf/ui/browsers/hists.c    | 4 ++++
>  tools/perf/ui/tui/setup.c         | 2 +-
>  3 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
> index e5250eb2dd57..acb0e23b138e 100644
> --- a/tools/perf/ui/browsers/annotate.c
> +++ b/tools/perf/ui/browsers/annotate.c
> @@ -838,6 +838,10 @@ int map_symbol__tui_annotate(struct map_symbol *ms, struct perf_evsel *evsel,
>  int hist_entry__tui_annotate(struct hist_entry *he, struct perf_evsel *evsel,
>  			     struct hist_browser_timer *hbt)
>  {
> +	/* reset abort key so that it can get Ctrl-C as a key */
> +	SLang_reset_tty();
> +	SLang_init_tty(0, 0, 0);
> +
>  	return map_symbol__tui_annotate(&he->ms, evsel, hbt);
>  }
>  
> diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
> index f981cb8f0158..e64893f2fd7f 100644
> --- a/tools/perf/ui/browsers/hists.c
> +++ b/tools/perf/ui/browsers/hists.c
> @@ -1741,6 +1741,10 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
>  	if (browser == NULL)
>  		return -1;
>  
> +	/* reset abort key so that it can get Ctrl-C as a key */
> +	SLang_reset_tty();
> +	SLang_init_tty(0, 0, 0);
> +
>  	if (min_pcnt) {
>  		browser->min_pcnt = min_pcnt;
>  		hist_browser__update_nr_entries(browser);
> diff --git a/tools/perf/ui/tui/setup.c b/tools/perf/ui/tui/setup.c
> index b77e1d771363..60d1f29b4b50 100644
> --- a/tools/perf/ui/tui/setup.c
> +++ b/tools/perf/ui/tui/setup.c
> @@ -129,7 +129,7 @@ int ui__init(void)
>  	err = SLsmg_init_smg();
>  	if (err < 0)
>  		goto out;
> -	err = SLang_init_tty(0, 0, 0);
> +	err = SLang_init_tty(-1, 0, 0);
>  	if (err < 0)
>  		goto out;
>  
> -- 
> 2.4.0

  reply	other threads:[~2015-05-29 13:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-28 23:40 [PATCH] perf tools: Make Ctrl-C stop processing on TUI Namhyung Kim
2015-05-29  6:45 ` Ingo Molnar
2015-05-29 12:53   ` [PATCH v2] " Namhyung Kim
2015-05-29 13:24     ` Arnaldo Carvalho de Melo [this message]
2015-05-29 15:49       ` Arnaldo Carvalho de Melo
2015-05-29 18:39     ` [tip:perf/core] " tip-bot for Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150529132437.GQ24859@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=dsahern@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.