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