root/include/linux/win_minmax.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. minmax_get
  2. minmax_reset

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /**
   3  * lib/minmax.c: windowed min/max tracker by Kathleen Nichols.
   4  *
   5  */
   6 #ifndef MINMAX_H
   7 #define MINMAX_H
   8 
   9 #include <linux/types.h>
  10 
  11 /* A single data point for our parameterized min-max tracker */
  12 struct minmax_sample {
  13         u32     t;      /* time measurement was taken */
  14         u32     v;      /* value measured */
  15 };
  16 
  17 /* State for the parameterized min-max tracker */
  18 struct minmax {
  19         struct minmax_sample s[3];
  20 };
  21 
  22 static inline u32 minmax_get(const struct minmax *m)
  23 {
  24         return m->s[0].v;
  25 }
  26 
  27 static inline u32 minmax_reset(struct minmax *m, u32 t, u32 meas)
  28 {
  29         struct minmax_sample val = { .t = t, .v = meas };
  30 
  31         m->s[2] = m->s[1] = m->s[0] = val;
  32         return m->s[0].v;
  33 }
  34 
  35 u32 minmax_running_max(struct minmax *m, u32 win, u32 t, u32 meas);
  36 u32 minmax_running_min(struct minmax *m, u32 win, u32 t, u32 meas);
  37 
  38 #endif

/* [<][>][^][v][top][bottom][index][help] */