blob: fbaa1507ebfe824943c13df2b4619afcfb75be0d [file] [log] [blame]
Arnaldo Carvalho de Melo34cea7f2010-08-08 19:56:47 -03001#ifndef _PERF_UI_PROGRESS_H_
2#define _PERF_UI_PROGRESS_H_ 1
3
Borislav Petkovd944c4e2014-04-25 21:31:02 +02004#include <linux/types.h>
Arnaldo Carvalho de Melo34cea7f2010-08-08 19:56:47 -03005
Arnaldo Carvalho de Melo4d3001f2013-10-23 15:40:38 -03006void ui_progress__finish(void);
Arnaldo Carvalho de Melo48000a12014-12-17 17:24:45 -03007
Arnaldo Carvalho de Melo4d3001f2013-10-23 15:40:38 -03008struct ui_progress {
9 const char *title;
10 u64 curr, next, step, total;
Jiri Olsa82338222017-09-08 14:05:10 +020011 bool size;
Arnaldo Carvalho de Melo4d3001f2013-10-23 15:40:38 -030012};
Arnaldo Carvalho de Melo48000a12014-12-17 17:24:45 -030013
Jiri Olsa82338222017-09-08 14:05:10 +020014void __ui_progress__init(struct ui_progress *p, u64 total,
15 const char *title, bool size);
16
17#define ui_progress__init(p, total, title) \
18 __ui_progress__init(p, total, title, false)
19
20#define ui_progress__init_size(p, total, title) \
21 __ui_progress__init(p, total, title, true)
22
Arnaldo Carvalho de Melo4d3001f2013-10-23 15:40:38 -030023void ui_progress__update(struct ui_progress *p, u64 adv);
24
Arnaldo Carvalho de Melo4779a2e2013-10-23 14:08:48 -030025struct ui_progress_ops {
Jiri Olsa25cc4eb2017-09-08 14:05:09 +020026 void (*init)(struct ui_progress *p);
Arnaldo Carvalho de Melo4d3001f2013-10-23 15:40:38 -030027 void (*update)(struct ui_progress *p);
Namhyung Kima5580f32012-11-13 22:30:34 +090028 void (*finish)(void);
Namhyung Kim688f2f52012-11-13 22:30:32 +090029};
30
Arnaldo Carvalho de Melo4779a2e2013-10-23 14:08:48 -030031extern struct ui_progress_ops *ui_progress__ops;
Namhyung Kim688f2f52012-11-13 22:30:32 +090032
Arnaldo Carvalho de Melo34cea7f2010-08-08 19:56:47 -030033#endif