1 // SPDX-License-Identifier: GPL-2.0 !! 1 #include "../cache.h" 2 #include <linux/kernel.h> << 3 #include "progress.h" 2 #include "progress.h" 4 3 5 static void null_progress__update(struct ui_pr 4 static void null_progress__update(struct ui_progress *p __maybe_unused) 6 { 5 { 7 } 6 } 8 7 9 static struct ui_progress_ops null_progress__o 8 static struct ui_progress_ops null_progress__ops = 10 { 9 { 11 .update = null_progress__update, 10 .update = null_progress__update, 12 }; 11 }; 13 12 14 struct ui_progress_ops *ui_progress__ops = &nu 13 struct ui_progress_ops *ui_progress__ops = &null_progress__ops; 15 14 16 void ui_progress__update(struct ui_progress *p 15 void ui_progress__update(struct ui_progress *p, u64 adv) 17 { 16 { 18 u64 last = p->curr; << 19 << 20 p->curr += adv; 17 p->curr += adv; 21 18 22 if (p->curr >= p->next) { 19 if (p->curr >= p->next) { 23 u64 nr = DIV_ROUND_UP(p->curr !! 20 p->next += p->step; 24 << 25 p->next += nr * p->step; << 26 ui_progress__ops->update(p); 21 ui_progress__ops->update(p); 27 } 22 } 28 } 23 } 29 24 30 void __ui_progress__init(struct ui_progress *p !! 25 void ui_progress__init(struct ui_progress *p, u64 total, const char *title) 31 const char *title, bo << 32 { 26 { 33 p->curr = 0; 27 p->curr = 0; 34 p->next = p->step = total / 16 ?: 1; !! 28 p->next = p->step = total / 16; 35 p->total = total; 29 p->total = total; 36 p->title = title; 30 p->title = title; 37 p->size = size; << 38 31 39 if (ui_progress__ops->init) << 40 ui_progress__ops->init(p); << 41 } 32 } 42 33 43 void ui_progress__finish(void) 34 void ui_progress__finish(void) 44 { 35 { 45 if (ui_progress__ops->finish) 36 if (ui_progress__ops->finish) 46 ui_progress__ops->finish(); 37 ui_progress__ops->finish(); 47 } 38 } 48 39
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.