1#ifndef PROC_SYSINFO_H
2#define PROC_SYSINFO_H
3#include <sys/types.h>
4#include <sys/dir.h>
5#include "procps.h"
6
7EXTERN_C_BEGIN
8
9extern unsigned long long Hertz;   /* clock tick frequency */
10extern long smp_num_cpus;     /* number of CPUs */
11extern int have_privs;     /* boolean, true if setuid or similar */
12
13
14extern int        uptime (double *uptime_secs, double *idle_secs);
15extern void       loadavg(double *av1, double *av5, double *av15);
16
17
18/* obsolete */
19extern unsigned long kb_main_shared;
20/* old but still kicking -- the important stuff */
21extern unsigned long kb_main_buffers;
22extern unsigned long kb_main_cached;
23extern unsigned long kb_main_free;
24extern unsigned long kb_main_total;
25extern unsigned long kb_swap_free;
26extern unsigned long kb_swap_total;
27/* recently introduced */
28extern unsigned long kb_high_free;
29extern unsigned long kb_high_total;
30extern unsigned long kb_low_free;
31extern unsigned long kb_low_total;
32/* 2.4.xx era */
33extern unsigned long kb_active;
34extern unsigned long kb_inact_laundry;  // grrr...
35extern unsigned long kb_inact_dirty;
36extern unsigned long kb_inact_clean;
37extern unsigned long kb_inact_target;
38extern unsigned long kb_swap_cached;  /* late 2.4+ */
39/* derived values */
40extern unsigned long kb_swap_used;
41extern unsigned long kb_main_used;
42/* 2.5.41+ */
43extern unsigned long kb_writeback;
44extern unsigned long kb_slab;
45extern unsigned long nr_reversemaps;
46extern unsigned long kb_committed_as;
47extern unsigned long kb_dirty;
48extern unsigned long kb_inactive;
49extern unsigned long kb_mapped;
50extern unsigned long kb_pagetables;
51
52#define BUFFSIZE (64*1024)
53typedef unsigned long long jiff;
54extern void getstat(jiff *restrict cuse, jiff *restrict cice, jiff *restrict csys, jiff *restrict cide, jiff *restrict ciow, jiff *restrict cxxx, jiff *restrict cyyy, jiff *restrict czzz,
55	     unsigned long *restrict pin, unsigned long *restrict pout, unsigned long *restrict s_in, unsigned long *restrict sout,
56	     unsigned *restrict intr, unsigned *restrict ctxt,
57	     unsigned int *restrict running, unsigned int *restrict blocked,
58	     unsigned int *restrict btime, unsigned int *restrict processes);
59
60extern void meminfo(void);
61
62
63extern unsigned long vm_nr_dirty;
64extern unsigned long vm_nr_writeback;
65extern unsigned long vm_nr_pagecache;
66extern unsigned long vm_nr_page_table_pages;
67extern unsigned long vm_nr_reverse_maps;
68extern unsigned long vm_nr_mapped;
69extern unsigned long vm_nr_slab;
70extern unsigned long vm_pgpgin;
71extern unsigned long vm_pgpgout;
72extern unsigned long vm_pswpin;
73extern unsigned long vm_pswpout;
74extern unsigned long vm_pgalloc;
75extern unsigned long vm_pgfree;
76extern unsigned long vm_pgactivate;
77extern unsigned long vm_pgdeactivate;
78extern unsigned long vm_pgfault;
79extern unsigned long vm_pgmajfault;
80extern unsigned long vm_pgscan;
81extern unsigned long vm_pgrefill;
82extern unsigned long vm_pgsteal;
83extern unsigned long vm_kswapd_steal;
84extern unsigned long vm_pageoutrun;
85extern unsigned long vm_allocstall;
86
87extern void vminfo(void);
88
89typedef struct disk_stat{
90	unsigned long long reads_sectors;
91	unsigned long long written_sectors;
92	char               disk_name [16];
93	unsigned           inprogress_IO;
94	unsigned           merged_reads;
95	unsigned           merged_writes;
96	unsigned           milli_reading;
97	unsigned           milli_spent_IO;
98	unsigned           milli_writing;
99	unsigned           partitions;
100	unsigned           reads;
101	unsigned           weighted_milli_spent_IO;
102	unsigned           writes;
103}disk_stat;
104
105typedef struct partition_stat{
106	char partition_name [16];
107	unsigned long long reads_sectors;
108	unsigned           parent_disk;  // index into a struct disk_stat array
109	unsigned           reads;
110	unsigned           writes;
111	unsigned           requested_writes;
112}partition_stat;
113
114extern unsigned int getpartitions_num(struct disk_stat *disks, int ndisks);
115extern unsigned int getdiskstat (struct disk_stat**,struct partition_stat**);
116
117typedef struct slab_cache{
118	char name[48];
119	unsigned active_objs;
120	unsigned num_objs;
121	unsigned objsize;
122	unsigned objperslab;
123}slab_cache;
124
125extern unsigned int getslabinfo (struct slab_cache**);
126
127extern unsigned get_pid_digits(void) FUNCTION;
128
129EXTERN_C_END
130#endif /* SYSINFO_H */
131