xref: /openbmc/linux/tools/perf/ui/progress.h (revision 664b0bae0b87f69bc9deb098f5e0158b9cf18e04)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2aca7a94dSNamhyung Kim #ifndef _PERF_UI_PROGRESS_H_
3aca7a94dSNamhyung Kim #define _PERF_UI_PROGRESS_H_ 1
4aca7a94dSNamhyung Kim 
5d944c4eeSBorislav Petkov #include <linux/types.h>
6aca7a94dSNamhyung Kim 
74d3001fdSArnaldo Carvalho de Melo void ui_progress__finish(void);
84d3001fdSArnaldo Carvalho de Melo 
94d3001fdSArnaldo Carvalho de Melo struct ui_progress {
104d3001fdSArnaldo Carvalho de Melo 	const char *title;
114d3001fdSArnaldo Carvalho de Melo 	u64 curr, next, step, total;
128233822fSJiri Olsa 	bool size;
134d3001fdSArnaldo Carvalho de Melo };
144d3001fdSArnaldo Carvalho de Melo 
158233822fSJiri Olsa void __ui_progress__init(struct ui_progress *p, u64 total,
168233822fSJiri Olsa 			 const char *title, bool size);
178233822fSJiri Olsa 
188233822fSJiri Olsa #define ui_progress__init(p, total, title) \
198233822fSJiri Olsa 	__ui_progress__init(p, total, title, false)
208233822fSJiri Olsa 
218233822fSJiri Olsa #define ui_progress__init_size(p, total, title) \
228233822fSJiri Olsa 	__ui_progress__init(p, total, title, true)
238233822fSJiri Olsa 
244d3001fdSArnaldo Carvalho de Melo void ui_progress__update(struct ui_progress *p, u64 adv);
254d3001fdSArnaldo Carvalho de Melo 
264779a2e9SArnaldo Carvalho de Melo struct ui_progress_ops {
2725cc4eb4SJiri Olsa 	void (*init)(struct ui_progress *p);
284d3001fdSArnaldo Carvalho de Melo 	void (*update)(struct ui_progress *p);
29a5580f3eSNamhyung Kim 	void (*finish)(void);
30688f2f5bSNamhyung Kim };
31688f2f5bSNamhyung Kim 
324779a2e9SArnaldo Carvalho de Melo extern struct ui_progress_ops *ui_progress__ops;
33688f2f5bSNamhyung Kim 
34aca7a94dSNamhyung Kim #endif
35