1234567891011121314151617181920212223242526272829303132 |
- #ifndef _LINUX_AVERAGE_H
- #define _LINUX_AVERAGE_H
- #include <linux/kernel.h>
- /* Exponentially weighted moving average (EWMA) */
- /* For more documentation see lib/average.c */
- struct ewma {
- unsigned long internal;
- unsigned long factor;
- unsigned long weight;
- };
- extern void ewma_init(struct ewma *avg, unsigned long factor,
- unsigned long weight);
- extern struct ewma *ewma_add(struct ewma *avg, unsigned long val);
- /**
- * ewma_read() - Get average value
- * @avg: Average structure
- *
- * Returns the average value held in @avg.
- */
- static inline unsigned long ewma_read(const struct ewma *avg)
- {
- return DIV_ROUND_CLOSEST(avg->internal, avg->factor);
- }
- #endif /* _LINUX_AVERAGE_H */
|