0001
0002 #ifndef _LINUX_SCHED_LOADAVG_H
0003 #define _LINUX_SCHED_LOADAVG_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 extern unsigned long avenrun[];
0016 extern void get_avenrun(unsigned long *loads, unsigned long offset, int shift);
0017
0018 #define FSHIFT 11
0019 #define FIXED_1 (1<<FSHIFT)
0020 #define LOAD_FREQ (5*HZ+1)
0021 #define EXP_1 1884
0022 #define EXP_5 2014
0023 #define EXP_15 2037
0024
0025
0026
0027
0028 static inline unsigned long
0029 calc_load(unsigned long load, unsigned long exp, unsigned long active)
0030 {
0031 unsigned long newload;
0032
0033 newload = load * exp + active * (FIXED_1 - exp);
0034 if (active >= load)
0035 newload += FIXED_1-1;
0036
0037 return newload / FIXED_1;
0038 }
0039
0040 extern unsigned long calc_load_n(unsigned long load, unsigned long exp,
0041 unsigned long active, unsigned int n);
0042
0043 #define LOAD_INT(x) ((x) >> FSHIFT)
0044 #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100)
0045
0046 extern void calc_global_load(void);
0047
0048 #endif