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
9
10
11
12
13
14
15#define DK_MAX_MAJOR 16
16#define DK_MAX_DISK 16
17
18struct kernel_stat {
19 unsigned int per_cpu_user[NR_CPUS],
20 per_cpu_nice[NR_CPUS],
21 per_cpu_system[NR_CPUS];
22 unsigned int dk_drive[DK_MAX_MAJOR][DK_MAX_DISK];
23 unsigned int dk_drive_rio[DK_MAX_MAJOR][DK_MAX_DISK];
24 unsigned int dk_drive_wio[DK_MAX_MAJOR][DK_MAX_DISK];
25 unsigned int dk_drive_rblk[DK_MAX_MAJOR][DK_MAX_DISK];
26 unsigned int dk_drive_wblk[DK_MAX_MAJOR][DK_MAX_DISK];
27 unsigned int pgpgin, pgpgout;
28 unsigned int pswpin, pswpout;
29 unsigned int pgalloc, pgfree;
30 unsigned int pgactivate, pgdeactivate;
31 unsigned int pgfault, pgmajfault;
32 unsigned int pgscan, pgsteal;
33 unsigned int pageoutrun, allocstall;
34#if !defined(CONFIG_ARCH_S390)
35 unsigned int irqs[NR_CPUS][NR_IRQS];
36#endif
37};
38
39extern struct kernel_stat kstat;
40
41extern unsigned long nr_context_switches(void);
42
43
44
45
46
47#define KERNEL_STAT_INC(x) kstat.x++
48#define KERNEL_STAT_ADD(x, y) kstat.x += y
49
50#if !defined(CONFIG_ARCH_S390)
51
52
53
54static inline int kstat_irqs (int irq)
55{
56 int i, sum=0;
57
58 for (i = 0 ; i < NR_CPUS ; i++)
59 sum += kstat.irqs[i][irq];
60
61 return sum;
62}
63#endif
64
65#endif
66