compat: crc8: undef pr_fmt
[~emulex/for-vlad/old/compat.git] / compat / compat-2.6.38.c
1 /*
2  * Copyright 2010    Hauke Mehrtens <hauke@hauke-m.de>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * Compatibility file for Linux wireless for kernels 2.6.38.
9  */
10
11 #include <linux/compat.h>
12 #include <linux/module.h>
13 #include <linux/bug.h>
14
15 /**
16  * ewma_init() - Initialize EWMA parameters
17  * @avg: Average structure
18  * @factor: Factor to use for the scaled up internal value. The maximum value
19  *      of averages can be ULONG_MAX/(factor*weight).
20  * @weight: Exponential weight, or decay rate. This defines how fast the
21  *      influence of older values decreases. Has to be bigger than 1.
22  *
23  * Initialize the EWMA parameters for a given struct ewma @avg.
24  */
25 void ewma_init(struct ewma *avg, unsigned long factor, unsigned long weight)
26 {
27         WARN_ON(weight <= 1 || factor == 0);
28         avg->internal = 0;
29         avg->weight = weight;
30         avg->factor = factor;
31 }
32 EXPORT_SYMBOL_GPL(ewma_init);
33
34 /**
35  * ewma_add() - Exponentially weighted moving average (EWMA)
36  * @avg: Average structure
37  * @val: Current value
38  *
39  * Add a sample to the average.
40  */
41 struct ewma *ewma_add(struct ewma *avg, unsigned long val)
42 {
43         avg->internal = avg->internal  ?
44                 (((avg->internal * (avg->weight - 1)) +
45                         (val * avg->factor)) / avg->weight) :
46                 (val * avg->factor);
47         return avg;
48 }
49 EXPORT_SYMBOL_GPL(ewma_add);
50