mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
4397bd2f90
When perf exits with some error it shows the error message with ui__error() or ui__warning() and then calls ui__exit() during exit_browser(). On TUI, it then shows a window titled "Fatal Error" to inform user a last message which might be related with this condition. However it sometimes contains no message and just annoyes users. The usual case for this is running perf top as normal user. (And /proc/sys/kernel/perf_event_paranoid being 1). Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1421736050-5283-1-git-send-email-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <pthread.h>
|
|
|
|
#include "../../util/debug.h"
|
|
#include "../helpline.h"
|
|
#include "../ui.h"
|
|
#include "../libslang.h"
|
|
|
|
char ui_helpline__last_msg[1024];
|
|
bool tui_helpline__set;
|
|
|
|
static void tui_helpline__pop(void)
|
|
{
|
|
}
|
|
|
|
static void tui_helpline__push(const char *msg)
|
|
{
|
|
const size_t sz = sizeof(ui_helpline__current);
|
|
|
|
SLsmg_gotorc(SLtt_Screen_Rows - 1, 0);
|
|
SLsmg_set_color(0);
|
|
SLsmg_write_nstring((char *)msg, SLtt_Screen_Cols);
|
|
SLsmg_refresh();
|
|
strncpy(ui_helpline__current, msg, sz)[sz - 1] = '\0';
|
|
}
|
|
|
|
static int tui_helpline__show(const char *format, va_list ap)
|
|
{
|
|
int ret;
|
|
static int backlog;
|
|
|
|
pthread_mutex_lock(&ui__lock);
|
|
ret = vscnprintf(ui_helpline__last_msg + backlog,
|
|
sizeof(ui_helpline__last_msg) - backlog, format, ap);
|
|
backlog += ret;
|
|
|
|
tui_helpline__set = true;
|
|
|
|
if (ui_helpline__last_msg[backlog - 1] == '\n') {
|
|
ui_helpline__puts(ui_helpline__last_msg);
|
|
SLsmg_refresh();
|
|
backlog = 0;
|
|
}
|
|
pthread_mutex_unlock(&ui__lock);
|
|
|
|
return ret;
|
|
}
|
|
|
|
struct ui_helpline tui_helpline_fns = {
|
|
.pop = tui_helpline__pop,
|
|
.push = tui_helpline__push,
|
|
.show = tui_helpline__show,
|
|
};
|
|
|
|
void ui_helpline__init(void)
|
|
{
|
|
helpline_fns = &tui_helpline_fns;
|
|
ui_helpline__puts(" ");
|
|
}
|