cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

progress.c (920B)


      1// SPDX-License-Identifier: GPL-2.0
      2#include <linux/kernel.h>
      3#include "progress.h"
      4
      5static void null_progress__update(struct ui_progress *p __maybe_unused)
      6{
      7}
      8
      9static struct ui_progress_ops null_progress__ops =
     10{
     11	.update = null_progress__update,
     12};
     13
     14struct ui_progress_ops *ui_progress__ops = &null_progress__ops;
     15
     16void ui_progress__update(struct ui_progress *p, u64 adv)
     17{
     18	u64 last = p->curr;
     19
     20	p->curr += adv;
     21
     22	if (p->curr >= p->next) {
     23		u64 nr = DIV_ROUND_UP(p->curr - last, p->step);
     24
     25		p->next += nr * p->step;
     26		ui_progress__ops->update(p);
     27	}
     28}
     29
     30void __ui_progress__init(struct ui_progress *p, u64 total,
     31			 const char *title, bool size)
     32{
     33	p->curr = 0;
     34	p->next = p->step = total / 16 ?: 1;
     35	p->total = total;
     36	p->title = title;
     37	p->size  = size;
     38
     39	if (ui_progress__ops->init)
     40		ui_progress__ops->init(p);
     41}
     42
     43void ui_progress__finish(void)
     44{
     45	if (ui_progress__ops->finish)
     46		ui_progress__ops->finish();
     47}