-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathphotosyst.h
199 lines (169 loc) · 6.81 KB
/
photosyst.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
/*
** ATOP - System & Process Monitor
**
** The program 'atop' offers the possibility to view the activity of
** the system on system-level as well as process-level.
**
** Include-file describing system-level counters maintained.
** ================================================================
** Author: Gerlof Langeveld
** E-mail: [email protected]
** Date: November 1996
** LINUX-port: June 2000
**
** This program is free software; you can redistribute it and/or modify it
** under the terms of the GNU General Public License as published by the
** Free Software Foundation; either version 2, or (at your option) any
** later version.
**
** This program is distributed in the hope that it will be useful, but
** WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU General Public License for more details.
*/
#include "netstats.h"
#define MAXCPU 64
#define MAXDSK 256
#define MAXLVM 256
#define MAXMDD 128
#define MAXDKNAM 32
#define MAXINTF 32
/************************************************************************/
struct memstat {
count_t physmem; /* number of physical pages */
count_t freemem; /* number of free pages */
count_t buffermem; /* number of buffer pages */
count_t slabmem; /* number of slab pages */
count_t cachemem; /* number of cache pages */
count_t cachedrt; /* number of cache pages (dirty) */
count_t totswap; /* number of pages in swap */
count_t freeswap; /* number of free swap pages */
count_t pgscans; /* number of page scans */
count_t allocstall; /* try to free pages forced */
count_t swouts; /* number of pages swapped out */
count_t swins; /* number of pages swapped in */
count_t commitlim; /* commit limit in pages */
count_t committed; /* number of reserved pages */
count_t cfuture[4]; /* reserved for future use */
};
/************************************************************************/
struct netstat {
struct ipv4_stats ipv4;
struct icmpv4_stats icmpv4;
struct udpv4_stats udpv4;
struct ipv6_stats ipv6;
struct icmpv6_stats icmpv6;
struct udpv6_stats udpv6;
struct tcp_stats tcp;
};
/************************************************************************/
struct freqcnt {
count_t maxfreq;/* frequency in MHz */
count_t cnt; /* number of clock ticks times state */
count_t ticks; /* number of total clock ticks */
/* if zero, cnt is actul freq */
};
struct percpu {
int cpunr;
count_t stime; /* system time in clock ticks */
count_t utime; /* user time in clock ticks */
count_t ntime; /* nice time in clock ticks */
count_t itime; /* idle time in clock ticks */
count_t wtime; /* iowait time in clock ticks */
count_t Itime; /* irq time in clock ticks */
count_t Stime; /* softirq time in clock ticks */
count_t steal; /* steal time in clock ticks */
count_t guest; /* guest time in clock ticks */
struct freqcnt freqcnt;/* frequency scaling info */
count_t cfuture[1]; /* reserved for future use */
};
struct cpustat {
count_t nrcpu; /* number of cpu's */
count_t devint; /* number of device interrupts */
count_t csw; /* number of context switches */
count_t nprocs; /* number of processes started */
float lavg1; /* load average last minute */
float lavg5; /* load average last 5 minutes */
float lavg15; /* load average last 15 minutes */
count_t cfuture[4]; /* reserved for future use */
struct percpu all;
struct percpu cpu[MAXCPU];
};
/************************************************************************/
struct perdsk {
char name[MAXDKNAM]; /* empty string for last */
count_t nread; /* number of read transfers */
count_t nrsect; /* number of sectors read */
count_t nwrite; /* number of write transfers */
count_t nwsect; /* number of sectors written */
count_t io_ms; /* number of millisecs spent for I/O */
count_t avque; /* average queue length */
count_t cfuture[4]; /* reserved for future use */
};
struct dskstat {
int ndsk; /* number of physical disks */
int nmdd; /* number of md volumes */
int nlvm; /* number of logical volumes */
struct perdsk dsk[MAXDSK];
struct perdsk mdd[MAXMDD];
struct perdsk lvm[MAXLVM];
};
/************************************************************************/
struct perintf {
char name[16]; /* empty string for last */
count_t rbyte; /* number of read bytes */
count_t rpack; /* number of read packets */
count_t rerrs; /* receive errors */
count_t rdrop; /* receive drops */
count_t rfifo; /* receive fifo */
count_t rframe; /* receive framing errors */
count_t rcompr; /* receive compressed */
count_t rmultic;/* receive multicast */
count_t rfuture[4]; /* reserved for future use */
count_t sbyte; /* number of written bytes */
count_t spack; /* number of written packets */
count_t serrs; /* transmit errors */
count_t sdrop; /* transmit drops */
count_t sfifo; /* transmit fifo */
count_t scollis;/* collisions */
count_t scarrier;/* transmit carrier */
count_t scompr; /* transmit compressed */
count_t sfuture[4]; /* reserved for future use */
long speed; /* interface speed in megabits/second */
char duplex; /* full duplex (boolean) */
count_t cfuture[4]; /* reserved for future use */
};
struct intfstat {
int nrintf;
struct perintf intf[MAXINTF];
};
/************************************************************************/
/*
** experimental stuff for access to local HTTP daemons
*/
#define HTTPREQ "GET /server-status?auto HTTP/1.1\nHost: localhost\n\n"
struct wwwstat {
count_t accesses; /* total number of HTTP-requests */
count_t totkbytes; /* total kbytes transfer for HTTP-req */
count_t uptime; /* number of seconds since startup */
int bworkers; /* number of busy httpd-daemons */
int iworkers; /* number of idle httpd-daemons */
};
#if HTTPSTATS
int getwwwstat(unsigned short, struct wwwstat *);
#endif
/************************************************************************/
struct sstat {
struct cpustat cpu;
struct memstat mem;
struct netstat net;
struct intfstat intf;
struct dskstat dsk;
struct wwwstat www;
};
/*
** prototypes
*/
void photosyst (struct sstat *);
void deviatsyst(struct sstat *, struct sstat *, struct sstat *);
void totalsyst (char, struct sstat *, struct sstat *);