linux/include/linux/average.h
<<
>>
Prefs
   1#ifndef _LINUX_AVERAGE_H
   2#define _LINUX_AVERAGE_H
   3
   4/* Exponentially weighted moving average (EWMA) */
   5
   6/* For more documentation see lib/average.c */
   7
   8struct ewma {
   9        unsigned long internal;
  10        unsigned long factor;
  11        unsigned long weight;
  12};
  13
  14extern void ewma_init(struct ewma *avg, unsigned long factor,
  15                      unsigned long weight);
  16
  17extern struct ewma *ewma_add(struct ewma *avg, unsigned long val);
  18
  19/**
  20 * ewma_read() - Get average value
  21 * @avg: Average structure
  22 *
  23 * Returns the average value held in @avg.
  24 */
  25static inline unsigned long ewma_read(const struct ewma *avg)
  26{
  27        return avg->internal >> avg->factor;
  28}
  29
  30#endif /* _LINUX_AVERAGE_H */
  31