1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _PERF_UI_PROGRESS_H_
3#define _PERF_UI_PROGRESS_H_ 1
4
5#include <linux/types.h>
6
7void ui_progress__finish(void);
8
9struct ui_progress {
10	const char *title;
11	u64 curr, next, step, total;
12	bool size;
13};
14
15void __ui_progress__init(struct ui_progress *p, u64 total,
16			 const char *title, bool size);
17
18#define ui_progress__init(p, total, title) \
19	__ui_progress__init(p, total, title, false)
20
21#define ui_progress__init_size(p, total, title) \
22	__ui_progress__init(p, total, title, true)
23
24void ui_progress__update(struct ui_progress *p, u64 adv);
25
26struct ui_progress_ops {
27	void (*init)(struct ui_progress *p);
28	void (*update)(struct ui_progress *p);
29	void (*finish)(void);
30};
31
32extern struct ui_progress_ops *ui_progress__ops;
33
34#endif
35