162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef _PERF_UI_PROGRESS_H_
362306a36Sopenharmony_ci#define _PERF_UI_PROGRESS_H_ 1
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <linux/types.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_civoid ui_progress__finish(void);
862306a36Sopenharmony_ci
962306a36Sopenharmony_cistruct ui_progress {
1062306a36Sopenharmony_ci	const char *title;
1162306a36Sopenharmony_ci	u64 curr, next, step, total;
1262306a36Sopenharmony_ci	bool size;
1362306a36Sopenharmony_ci};
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_civoid __ui_progress__init(struct ui_progress *p, u64 total,
1662306a36Sopenharmony_ci			 const char *title, bool size);
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define ui_progress__init(p, total, title) \
1962306a36Sopenharmony_ci	__ui_progress__init(p, total, title, false)
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#define ui_progress__init_size(p, total, title) \
2262306a36Sopenharmony_ci	__ui_progress__init(p, total, title, true)
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_civoid ui_progress__update(struct ui_progress *p, u64 adv);
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_cistruct ui_progress_ops {
2762306a36Sopenharmony_ci	void (*init)(struct ui_progress *p);
2862306a36Sopenharmony_ci	void (*update)(struct ui_progress *p);
2962306a36Sopenharmony_ci	void (*finish)(void);
3062306a36Sopenharmony_ci};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciextern struct ui_progress_ops *ui_progress__ops;
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#endif
35