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

win_minmax.h (832B)


      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 */
     12struct minmax_sample {
     13	u32	t;	/* time measurement was taken */
     14	u32	v;	/* value measured */
     15};
     16
     17/* State for the parameterized min-max tracker */
     18struct minmax {
     19	struct minmax_sample s[3];
     20};
     21
     22static inline u32 minmax_get(const struct minmax *m)
     23{
     24	return m->s[0].v;
     25}
     26
     27static 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
     35u32 minmax_running_max(struct minmax *m, u32 win, u32 t, u32 meas);
     36u32 minmax_running_min(struct minmax *m, u32 win, u32 t, u32 meas);
     37
     38#endif