Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
average.h
Go to the documentation of this file.
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 
8 struct ewma {
9  unsigned long internal;
10  unsigned long factor;
11  unsigned long weight;
12 };
13 
14 extern void ewma_init(struct ewma *avg, unsigned long factor,
15  unsigned long weight);
16 
17 extern struct ewma *ewma_add(struct ewma *avg, unsigned long val);
18 
25 static inline unsigned long ewma_read(const struct ewma *avg)
26 {
27  return avg->internal >> avg->factor;
28 }
29 
30 #endif /* _LINUX_AVERAGE_H */