File: /usr/include/linux/kernel_stat.h
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 * 'kernel_stat.h' contains the definitions needed for doing
11 * some kernel statistics (CPU usage, context switches ...),
12 * used by rstatd/perfmeter
13 */
14
15 #define DK_MAX_MAJOR 64
16 #define DK_MAX_DISK 16
17
18 struct 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 #if !defined(CONFIG_ARCH_S390)
30 unsigned int irqs[NR_CPUS][NR_IRQS];
31 #endif
32 unsigned int ipackets, opackets;
33 unsigned int ierrors, oerrors;
34 unsigned int collisions;
35 unsigned int context_swtch;
36 unsigned int context_swtch_cross;
37 unsigned int nr_free_pending;
38 unsigned int nr_allocated;
39 unsigned int nr_idle_input_pending;
40 unsigned int nr_output_space_pending;
41 unsigned int nr_work_pending;
42 unsigned int nr_input_pending;
43 unsigned int nr_cachemiss_pending;
44 unsigned int nr_secondary_pending;
45 unsigned int nr_output_pending;
46 unsigned int nr_redirect_pending;
47 unsigned int nr_postpone_pending;
48 unsigned int nr_finish_pending;
49 unsigned int nr_userspace_pending;
50 unsigned int static_lookup_cachemisses;
51 unsigned int static_sendfile_cachemisses;
52 unsigned int user_lookup_cachemisses;
53 unsigned int user_fetch_cachemisses;
54 unsigned int user_sendobject_cachemisses;
55 unsigned int user_sendobject_write_misses;
56 unsigned int user_sendbuf_cachemisses;
57 unsigned int user_sendbuf_write_misses;
58 #define URL_HIST_SIZE 1000
59 unsigned int url_hist_hits[URL_HIST_SIZE];
60 unsigned int url_hist_misses[URL_HIST_SIZE];
61 unsigned int input_fastpath;
62 unsigned int input_slowpath;
63 unsigned int inputqueue_got_packet;
64 unsigned int inputqueue_no_packet;
65 unsigned int nr_keepalive_optimized;
66
67 unsigned int parse_static_incomplete;
68 unsigned int parse_static_redirect;
69 unsigned int parse_static_cachemiss;
70 unsigned int parse_static_nooutput;
71 unsigned int parse_static_normal;
72 unsigned int parse_dynamic_incomplete;
73 unsigned int parse_dynamic_redirect;
74 unsigned int parse_dynamic_cachemiss;
75 unsigned int parse_dynamic_nooutput;
76 unsigned int parse_dynamic_normal;
77 unsigned int complete_parsing;
78
79 unsigned int nr_keepalive_reqs;
80 unsigned int nr_nonkeepalive_reqs;
81 #define KEEPALIVE_HIST_SIZE 100
82 unsigned int keepalive_hist[KEEPALIVE_HIST_SIZE];
83 };
84
85
86 extern struct kernel_stat kstat;
87
88 #if !defined(CONFIG_ARCH_S390)
89 /*
90 * Number of interrupts per specific IRQ source, since bootup
91 */
92 extern inline int kstat_irqs (int irq)
93 {
94 int i, sum=0;
95
96 for (i = 0 ; i < smp_num_cpus ; i++)
97 sum += kstat.irqs[cpu_logical_map(i)][irq];
98
99 return sum;
100 }
101 #endif
102
103 #endif /* _LINUX_KERNEL_STAT_H */
104