linux/tools/perf/util/spark.c
<<
>>
Prefs
   1#include <stdio.h>
   2#include <limits.h>
   3#include <string.h>
   4#include <stdlib.h>
   5#include "spark.h"
   6#include "stat.h"
   7
   8#define SPARK_SHIFT 8
   9
  10/* Print spark lines on outf for numval values in val. */
  11int print_spark(char *bf, int size, unsigned long *val, int numval)
  12{
  13        static const char *ticks[NUM_SPARKS] = {
  14                "▁",  "▂", "▃", "▄", "▅", "▆", "▇", "█"
  15        };
  16        int i, printed = 0;
  17        unsigned long min = ULONG_MAX, max = 0, f;
  18
  19        for (i = 0; i < numval; i++) {
  20                if (val[i] < min)
  21                        min = val[i];
  22                if (val[i] > max)
  23                        max = val[i];
  24        }
  25        f = ((max - min) << SPARK_SHIFT) / (NUM_SPARKS - 1);
  26        if (f < 1)
  27                f = 1;
  28        for (i = 0; i < numval; i++) {
  29                printed += scnprintf(bf + printed, size - printed, "%s",
  30                                     ticks[((val[i] - min) << SPARK_SHIFT) / f]);
  31        }
  32
  33        return printed;
  34}
  35