mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
perf tui: Catch signals to exit gracefully
Resetting the terminal to a sane state. Reported-by: Ingo Molnar <[email protected]> Cc: David Ahern <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Mike Galbraith <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Stephane Eranian <[email protected]> Link: http://lkml.kernel.org/n/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
parent
2d5646c0d5
commit
3f7247e072
1 changed files with 23 additions and 1 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include "browser.h"
|
||||
#include "helpline.h"
|
||||
#include "ui.h"
|
||||
#include "libslang.h"
|
||||
|
||||
pthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
|
|
@ -17,6 +18,21 @@ static void newt_suspend(void *d __used)
|
|||
newtResume();
|
||||
}
|
||||
|
||||
static void ui__exit(void)
|
||||
{
|
||||
SLtt_set_cursor_visibility(1);
|
||||
SLsmg_refresh();
|
||||
SLsmg_reset_smg();
|
||||
SLang_reset_tty();
|
||||
}
|
||||
|
||||
static void ui__signal(int sig)
|
||||
{
|
||||
ui__exit();
|
||||
psignal(sig, "perf");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
void setup_browser(bool fallback_to_pager)
|
||||
{
|
||||
if (!isatty(1) || !use_browser || dump_trace) {
|
||||
|
|
@ -32,6 +48,12 @@ void setup_browser(bool fallback_to_pager)
|
|||
newtSetSuspendCallback(newt_suspend, NULL);
|
||||
ui_helpline__init();
|
||||
ui_browser__init();
|
||||
|
||||
signal(SIGSEGV, ui__signal);
|
||||
signal(SIGFPE, ui__signal);
|
||||
signal(SIGINT, ui__signal);
|
||||
signal(SIGQUIT, ui__signal);
|
||||
signal(SIGTERM, ui__signal);
|
||||
}
|
||||
|
||||
void exit_browser(bool wait_for_ok)
|
||||
|
|
@ -41,6 +63,6 @@ void exit_browser(bool wait_for_ok)
|
|||
char title[] = "Fatal Error", ok[] = "Ok";
|
||||
newtWinMessage(title, ok, ui_helpline__last_msg);
|
||||
}
|
||||
newtFinished();
|
||||
ui__exit();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue