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