1234567891011121314151617181920212223242526272829303132333435363738 |
- /**
- * lib/minmax.c: windowed min/max tracker by Kathleen Nichols.
- *
- */
- #ifndef MINMAX_H
- #define MINMAX_H
- #include <linux/types.h>
- /* A single data point for our parameterized min-max tracker */
- struct minmax_sample {
- u32 t; /* time measurement was taken */
- u32 v; /* value measured */
- };
- /* State for the parameterized min-max tracker */
- struct minmax {
- struct minmax_sample s[3];
- };
- static inline u32 minmax_get(const struct minmax *m)
- {
- return m->s[0].v;
- }
- static inline u32 minmax_reset(struct minmax *m, u32 t, u32 meas)
- {
- struct minmax_sample val = { .t = t, .v = meas };
- m->s[2] = m->s[1] = m->s[0] = val;
- return m->s[0].v;
- }
- u32 minmax_running_max(struct minmax *m, u32 win, u32 t, u32 meas);
- u32 minmax_running_min(struct minmax *m, u32 win, u32 t, u32 meas);
- #endif
|