perf ui: Introduce generic ui_progress helper

Make ui_progress functions generic so that UI frontend code will add its
callbacks.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1352813436-14173-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Namhyung Kim 2012-11-13 22:30:32 +09:00 коммит произвёл Arnaldo Carvalho de Melo
Родитель 7da5c85dd3
Коммит 688f2f5b99
6 изменённых файлов: 41 добавлений и 12 удалений

Просмотреть файл

@ -423,6 +423,7 @@ LIB_OBJS += $(OUTPUT)util/vdso.o
LIB_OBJS += $(OUTPUT)util/stat.o LIB_OBJS += $(OUTPUT)util/stat.o
LIB_OBJS += $(OUTPUT)ui/helpline.o LIB_OBJS += $(OUTPUT)ui/helpline.o
LIB_OBJS += $(OUTPUT)ui/progress.o
LIB_OBJS += $(OUTPUT)ui/hist.o LIB_OBJS += $(OUTPUT)ui/hist.o
LIB_OBJS += $(OUTPUT)ui/stdio/hist.o LIB_OBJS += $(OUTPUT)ui/stdio/hist.o

Просмотреть файл

@ -111,14 +111,3 @@ struct perf_error_ops perf_gtk_eops = {
.warning = perf_gtk__warning_statusbar, .warning = perf_gtk__warning_statusbar,
#endif #endif
}; };
/*
* FIXME: Functions below should be implemented properly.
* For now, just add stubs for NO_NEWT=1 build.
*/
#ifndef NEWT_SUPPORT
void ui_progress__update(u64 curr __maybe_unused, u64 total __maybe_unused,
const char *title __maybe_unused)
{
}
#endif

20
tools/perf/ui/progress.c Normal file
Просмотреть файл

@ -0,0 +1,20 @@
#include "../cache.h"
#include "progress.h"
static void nop_progress_update(u64 curr __maybe_unused,
u64 total __maybe_unused,
const char *title __maybe_unused)
{
}
static struct ui_progress default_progress_fns =
{
.update = nop_progress_update,
};
struct ui_progress *progress_fns = &default_progress_fns;
void ui_progress__update(u64 curr, u64 total, const char *title)
{
return progress_fns->update(curr, total, title);
}

Просмотреть файл

@ -3,6 +3,14 @@
#include <../types.h> #include <../types.h>
struct ui_progress {
void (*update)(u64, u64, const char *);
};
extern struct ui_progress *progress_fns;
void ui_progress__init(void);
void ui_progress__update(u64 curr, u64 total, const char *title); void ui_progress__update(u64 curr, u64 total, const char *title);
#endif #endif

Просмотреть файл

@ -4,7 +4,7 @@
#include "../ui.h" #include "../ui.h"
#include "../browser.h" #include "../browser.h"
void ui_progress__update(u64 curr, u64 total, const char *title) static void tui_progress__update(u64 curr, u64 total, const char *title)
{ {
int bar, y; int bar, y;
/* /*
@ -30,3 +30,13 @@ void ui_progress__update(u64 curr, u64 total, const char *title)
SLsmg_refresh(); SLsmg_refresh();
pthread_mutex_unlock(&ui__lock); pthread_mutex_unlock(&ui__lock);
} }
static struct ui_progress tui_progress_fns =
{
.update = tui_progress__update,
};
void ui_progress__init(void)
{
progress_fns = &tui_progress_fns;
}

Просмотреть файл

@ -118,6 +118,7 @@ int ui__init(void)
newtSetSuspendCallback(newt_suspend, NULL); newtSetSuspendCallback(newt_suspend, NULL);
ui_helpline__init(); ui_helpline__init();
ui_browser__init(); ui_browser__init();
ui_progress__init();
signal(SIGSEGV, ui__signal); signal(SIGSEGV, ui__signal);
signal(SIGFPE, ui__signal); signal(SIGFPE, ui__signal);