Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
#ifndef _LINUX_KERNEL_STAT_H
2
#define _LINUX_KERNEL_STAT_H
3
 
4
#include <linux/config.h>
5
#include <asm/irq.h>
6
#include <linux/smp.h>
7
#include <linux/threads.h>
8
#include <linux/percpu.h>
9
 
10
/*
11
 * 'kernel_stat.h' contains the definitions needed for doing
12
 * some kernel statistics (CPU usage, context switches ...),
13
 * used by rstatd/perfmeter
14
 */
15
 
16
struct cpu_usage_stat {
17
        unsigned int user;
18
        unsigned int nice;
19
        unsigned int system;
20
        unsigned int softirq;
21
        unsigned int irq;
22
        unsigned int idle;
23
        unsigned int iowait;
24
};
25
 
26
struct kernel_stat {
27
        struct cpu_usage_stat   cpustat;
28
        unsigned int irqs[NR_IRQS];
29
};
30
 
31
DECLARE_PER_CPU(struct kernel_stat, kstat);
32
 
33
#define kstat_cpu(cpu)  per_cpu(kstat, cpu)
34
/* Must have preemption disabled for this to be meaningful. */
35
#define kstat_this_cpu  __get_cpu_var(kstat)
36
 
37
extern unsigned long nr_context_switches(void);
38
 
39
/*
40
 * Number of interrupts per specific IRQ source, since bootup
41
 */
42
static inline int kstat_irqs(int irq)
43
{
44
        int i, sum=0;
45
 
46
        for (i = 0; i < NR_CPUS; i++)
47
                if (cpu_possible(i))
48
                        sum += kstat_cpu(i).irqs[irq];
49
 
50
        return sum;
51
}
52
 
53
#endif /* _LINUX_KERNEL_STAT_H */