Blame


1 f0f4401f 2004-04-23 devnull #include <u.h>
2 f0f4401f 2004-04-23 devnull #include <libc.h>
3 f0f4401f 2004-04-23 devnull #include <bio.h>
4 f0f4401f 2004-04-23 devnull #include "dat.h"
5 f0f4401f 2004-04-23 devnull
6 f0f4401f 2004-04-23 devnull void xapm(int);
7 f0f4401f 2004-04-23 devnull void xloadavg(int);
8 f0f4401f 2004-04-23 devnull void xmeminfo(int);
9 f0f4401f 2004-04-23 devnull void xnet(int);
10 f0f4401f 2004-04-23 devnull void xstat(int);
11 3c6ab185 2009-08-08 fshahriar void xvmstat(int);
12 3c6ab185 2009-08-08 fshahriar void xwireless(int);
13 f0f4401f 2004-04-23 devnull
14 f0f4401f 2004-04-23 devnull void (*statfn[])(int) =
15 f0f4401f 2004-04-23 devnull {
16 f0f4401f 2004-04-23 devnull xapm,
17 f0f4401f 2004-04-23 devnull xloadavg,
18 f0f4401f 2004-04-23 devnull xmeminfo,
19 f0f4401f 2004-04-23 devnull xnet,
20 f0f4401f 2004-04-23 devnull xstat,
21 3c6ab185 2009-08-08 fshahriar xvmstat,
22 3c6ab185 2009-08-08 fshahriar xwireless,
23 f0f4401f 2004-04-23 devnull 0
24 f0f4401f 2004-04-23 devnull };
25 f0f4401f 2004-04-23 devnull
26 f0f4401f 2004-04-23 devnull void
27 f0f4401f 2004-04-23 devnull xapm(int first)
28 f0f4401f 2004-04-23 devnull {
29 7d827b5c 2019-09-19 crossd static int fd = -1;
30 7d827b5c 2019-09-19 crossd int curr = -1;
31 f0f4401f 2004-04-23 devnull
32 f0f4401f 2004-04-23 devnull if(first){
33 7d827b5c 2019-09-19 crossd fd = open("/sys/class/power_supply/BAT0/capacity", OREAD);
34 f0f4401f 2004-04-23 devnull return;
35 f0f4401f 2004-04-23 devnull }
36 7d827b5c 2019-09-19 crossd if(fd == -1)
37 7be768e7 2007-09-15 rsc return;
38 7be768e7 2007-09-15 rsc
39 f0f4401f 2004-04-23 devnull readfile(fd);
40 7d827b5c 2019-09-19 crossd tokens(0);
41 7d827b5c 2019-09-19 crossd curr = atoi(tok[0]);
42 fa325e9b 2020-01-10 cross
43 7d827b5c 2019-09-19 crossd if(curr != -1)
44 7d827b5c 2019-09-19 crossd Bprint(&bout, "battery =%d 100\n", curr);
45 7be768e7 2007-09-15 rsc
46 f0f4401f 2004-04-23 devnull }
47 fa325e9b 2020-01-10 cross
48 f0f4401f 2004-04-23 devnull void
49 f0f4401f 2004-04-23 devnull xloadavg(int first)
50 f0f4401f 2004-04-23 devnull {
51 f0f4401f 2004-04-23 devnull static int fd = -1;
52 f0f4401f 2004-04-23 devnull
53 f0f4401f 2004-04-23 devnull if(first){
54 f0f4401f 2004-04-23 devnull fd = open("/proc/loadavg", OREAD);
55 f0f4401f 2004-04-23 devnull return;
56 f0f4401f 2004-04-23 devnull }
57 f0f4401f 2004-04-23 devnull
58 f0f4401f 2004-04-23 devnull readfile(fd);
59 f0f4401f 2004-04-23 devnull tokens(0);
60 f0f4401f 2004-04-23 devnull if(ntok >= 1)
61 f0f4401f 2004-04-23 devnull Bprint(&bout, "load =%d 1000\n", (int)(atof(tok[0])*1000));
62 f0f4401f 2004-04-23 devnull }
63 f0f4401f 2004-04-23 devnull
64 f0f4401f 2004-04-23 devnull void
65 f0f4401f 2004-04-23 devnull xmeminfo(int first)
66 f0f4401f 2004-04-23 devnull {
67 f0f4401f 2004-04-23 devnull int i;
68 f0f4401f 2004-04-23 devnull vlong tot, used;
69 78802e69 2004-04-24 devnull vlong mtot, mfree;
70 3c6ab185 2009-08-08 fshahriar vlong stot, sfree;
71 f0f4401f 2004-04-23 devnull static int fd = -1;
72 f0f4401f 2004-04-23 devnull
73 f0f4401f 2004-04-23 devnull if(first){
74 f0f4401f 2004-04-23 devnull fd = open("/proc/meminfo", OREAD);
75 f0f4401f 2004-04-23 devnull return;
76 f0f4401f 2004-04-23 devnull }
77 f0f4401f 2004-04-23 devnull
78 f0f4401f 2004-04-23 devnull readfile(fd);
79 78802e69 2004-04-24 devnull mtot = 0;
80 3c6ab185 2009-08-08 fshahriar stot = 0;
81 3c6ab185 2009-08-08 fshahriar mfree = 0;
82 3c6ab185 2009-08-08 fshahriar sfree = 0;
83 f0f4401f 2004-04-23 devnull for(i=0; i<nline; i++){
84 f0f4401f 2004-04-23 devnull tokens(i);
85 78802e69 2004-04-24 devnull if(ntok < 3)
86 f0f4401f 2004-04-23 devnull continue;
87 f0f4401f 2004-04-23 devnull tot = atoll(tok[1]);
88 f0f4401f 2004-04-23 devnull used = atoll(tok[2]);
89 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "Mem:") == 0)
90 f0f4401f 2004-04-23 devnull Bprint(&bout, "mem =%lld %lld\n", used/1024, tot/1024);
91 f0f4401f 2004-04-23 devnull else if(strcmp(tok[0], "Swap:") == 0)
92 f0f4401f 2004-04-23 devnull Bprint(&bout, "swap =%lld %lld\n", used/1024, tot/1024);
93 78802e69 2004-04-24 devnull else if(strcmp(tok[0], "MemTotal:") == 0)
94 78802e69 2004-04-24 devnull mtot = atoll(tok[1]); /* kb */
95 3c6ab185 2009-08-08 fshahriar else if(strcmp(tok[0], "MemFree:") == 0)
96 3c6ab185 2009-08-08 fshahriar mfree += atoll(tok[1]);
97 3c6ab185 2009-08-08 fshahriar else if(strcmp(tok[0], "Buffers:") == 0)
98 3c6ab185 2009-08-08 fshahriar mfree += atoll(tok[1]);
99 3c6ab185 2009-08-08 fshahriar else if(strcmp(tok[0], "Cached:") == 0){
100 3c6ab185 2009-08-08 fshahriar mfree += atoll(tok[1]);
101 78802e69 2004-04-24 devnull if(mtot < mfree)
102 78802e69 2004-04-24 devnull continue;
103 78802e69 2004-04-24 devnull Bprint(&bout, "mem =%lld %lld\n", mtot-mfree, mtot);
104 3c6ab185 2009-08-08 fshahriar }else if(strcmp(tok[0], "SwapTotal:") == 0)
105 3c6ab185 2009-08-08 fshahriar stot = atoll(tok[1]); /* kb */
106 3c6ab185 2009-08-08 fshahriar else if(strcmp(tok[0], "SwapFree:") == 0){
107 3c6ab185 2009-08-08 fshahriar sfree = atoll(tok[1]);
108 3c6ab185 2009-08-08 fshahriar if(stot < sfree)
109 3c6ab185 2009-08-08 fshahriar continue;
110 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "swap =%lld %lld\n", stot-sfree, stot);
111 78802e69 2004-04-24 devnull }
112 f0f4401f 2004-04-23 devnull }
113 f0f4401f 2004-04-23 devnull }
114 f0f4401f 2004-04-23 devnull
115 f0f4401f 2004-04-23 devnull void
116 f0f4401f 2004-04-23 devnull xnet(int first)
117 f0f4401f 2004-04-23 devnull {
118 f0f4401f 2004-04-23 devnull int i, n;
119 f0f4401f 2004-04-23 devnull vlong totb, totp, tote, totin, totou, totinb, totoub, b, p, e, in, ou, inb, oub;
120 f0f4401f 2004-04-23 devnull char *q;
121 f0f4401f 2004-04-23 devnull static int fd = -1;
122 f0f4401f 2004-04-23 devnull
123 f0f4401f 2004-04-23 devnull if(first){
124 f0f4401f 2004-04-23 devnull fd = open("/proc/net/dev", OREAD);
125 f0f4401f 2004-04-23 devnull return;
126 f0f4401f 2004-04-23 devnull }
127 f0f4401f 2004-04-23 devnull
128 f0f4401f 2004-04-23 devnull readfile(fd);
129 f0f4401f 2004-04-23 devnull n = 0;
130 f0f4401f 2004-04-23 devnull totb = 0;
131 f0f4401f 2004-04-23 devnull tote = 0;
132 f0f4401f 2004-04-23 devnull totp = 0;
133 f0f4401f 2004-04-23 devnull totin = 0;
134 f0f4401f 2004-04-23 devnull totou = 0;
135 f0f4401f 2004-04-23 devnull totinb = 0;
136 f0f4401f 2004-04-23 devnull totoub = 0;
137 f0f4401f 2004-04-23 devnull for(i=0; i<nline; i++){
138 be36ff68 2004-04-29 devnull if((q = strchr(line[i], ':')) != nil)
139 be36ff68 2004-04-29 devnull *q = ' ';
140 f0f4401f 2004-04-23 devnull tokens(i);
141 f0f4401f 2004-04-23 devnull if(ntok < 8+8)
142 f0f4401f 2004-04-23 devnull continue;
143 3c6ab185 2009-08-08 fshahriar if(strncmp(tok[0], "eth", 3) != 0 && strncmp(tok[0], "wlan", 4) != 0)
144 f0f4401f 2004-04-23 devnull continue;
145 be36ff68 2004-04-29 devnull inb = atoll(tok[1]);
146 be36ff68 2004-04-29 devnull oub = atoll(tok[9]);
147 be36ff68 2004-04-29 devnull in = atoll(tok[2]);
148 be36ff68 2004-04-29 devnull ou = atoll(tok[10]);
149 f0f4401f 2004-04-23 devnull b = inb+oub;
150 f0f4401f 2004-04-23 devnull p = in+ou;
151 be36ff68 2004-04-29 devnull e = atoll(tok[3])+atoll(tok[11]);
152 f0f4401f 2004-04-23 devnull totb += b;
153 f0f4401f 2004-04-23 devnull totp += p;
154 f0f4401f 2004-04-23 devnull tote += e;
155 f0f4401f 2004-04-23 devnull totin += in;
156 f0f4401f 2004-04-23 devnull totou += ou;
157 f0f4401f 2004-04-23 devnull totinb += inb;
158 f0f4401f 2004-04-23 devnull totoub += oub;
159 f0f4401f 2004-04-23 devnull n++;
160 f0f4401f 2004-04-23 devnull }
161 f0f4401f 2004-04-23 devnull Bprint(&bout, "etherb %lld %d\n", totb, n*1000000);
162 f0f4401f 2004-04-23 devnull Bprint(&bout, "ether %lld %d\n", totp, n*1000);
163 f0f4401f 2004-04-23 devnull Bprint(&bout, "ethererr %lld %d\n", tote, n*1000);
164 f0f4401f 2004-04-23 devnull Bprint(&bout, "etherin %lld %d\n", totin, n*1000);
165 f0f4401f 2004-04-23 devnull Bprint(&bout, "etherout %lld %d\n", totou, n*1000);
166 f0f4401f 2004-04-23 devnull Bprint(&bout, "etherinb %lld %d\n", totinb, n*1000);
167 f0f4401f 2004-04-23 devnull Bprint(&bout, "etheroutb %lld %d\n", totoub, n*1000);
168 f0f4401f 2004-04-23 devnull }
169 f0f4401f 2004-04-23 devnull
170 f0f4401f 2004-04-23 devnull void
171 f0f4401f 2004-04-23 devnull xstat(int first)
172 f0f4401f 2004-04-23 devnull {
173 f0f4401f 2004-04-23 devnull static int fd = -1;
174 f0f4401f 2004-04-23 devnull int i;
175 f0f4401f 2004-04-23 devnull
176 f0f4401f 2004-04-23 devnull if(first){
177 f0f4401f 2004-04-23 devnull fd = open("/proc/stat", OREAD);
178 f0f4401f 2004-04-23 devnull return;
179 f0f4401f 2004-04-23 devnull }
180 f0f4401f 2004-04-23 devnull
181 f0f4401f 2004-04-23 devnull readfile(fd);
182 f0f4401f 2004-04-23 devnull for(i=0; i<nline; i++){
183 f0f4401f 2004-04-23 devnull tokens(i);
184 f0f4401f 2004-04-23 devnull if(ntok < 2)
185 f0f4401f 2004-04-23 devnull continue;
186 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "cpu") == 0 && ntok >= 5){
187 f0f4401f 2004-04-23 devnull Bprint(&bout, "user %lld 100\n", atoll(tok[1]));
188 f0f4401f 2004-04-23 devnull Bprint(&bout, "sys %lld 100\n", atoll(tok[3]));
189 f0f4401f 2004-04-23 devnull Bprint(&bout, "cpu %lld 100\n", atoll(tok[1])+atoll(tok[3]));
190 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "idle %lld 100\n", atoll(tok[4]));
191 f0f4401f 2004-04-23 devnull }
192 f0f4401f 2004-04-23 devnull /*
193 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "page") == 0 && ntok >= 3){
194 f0f4401f 2004-04-23 devnull Bprint(&bout, "pagein %lld 500\n", atoll(tok[1]));
195 f0f4401f 2004-04-23 devnull Bprint(&bout, "pageout %lld 500\n", atoll(tok[2]));
196 f0f4401f 2004-04-23 devnull Bprint(&bout, "page %lld 1000\n", atoll(tok[1])+atoll(tok[2]));
197 f0f4401f 2004-04-23 devnull }
198 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "swap") == 0 && ntok >= 3){
199 f0f4401f 2004-04-23 devnull Bprint(&bout, "swapin %lld 500\n", atoll(tok[1]));
200 f0f4401f 2004-04-23 devnull Bprint(&bout, "swapout %lld 500\n", atoll(tok[2]));
201 f0f4401f 2004-04-23 devnull Bprint(&bout, "swap %lld 1000\n", atoll(tok[1])+atoll(tok[2]));
202 f0f4401f 2004-04-23 devnull }
203 f0f4401f 2004-04-23 devnull */
204 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "intr") == 0)
205 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "intr %lld 1000\n", atoll(tok[1]));
206 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "ctxt") == 0)
207 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "context %lld 10000\n", atoll(tok[1]));
208 f0f4401f 2004-04-23 devnull if(strcmp(tok[0], "processes") == 0)
209 f0f4401f 2004-04-23 devnull Bprint(&bout, "fork %lld 1000\n", atoll(tok[1]));
210 f0f4401f 2004-04-23 devnull }
211 f0f4401f 2004-04-23 devnull }
212 f0f4401f 2004-04-23 devnull
213 3c6ab185 2009-08-08 fshahriar void
214 3c6ab185 2009-08-08 fshahriar xvmstat(int first)
215 3c6ab185 2009-08-08 fshahriar {
216 3c6ab185 2009-08-08 fshahriar static int fd = -1;
217 3c6ab185 2009-08-08 fshahriar int i;
218 3c6ab185 2009-08-08 fshahriar
219 3c6ab185 2009-08-08 fshahriar if(first){
220 3c6ab185 2009-08-08 fshahriar fd = open("/proc/vmstat", OREAD);
221 3c6ab185 2009-08-08 fshahriar return;
222 3c6ab185 2009-08-08 fshahriar }
223 3c6ab185 2009-08-08 fshahriar
224 3c6ab185 2009-08-08 fshahriar readfile(fd);
225 3c6ab185 2009-08-08 fshahriar for(i=0; i<nline; i++){
226 3c6ab185 2009-08-08 fshahriar tokens(i);
227 3c6ab185 2009-08-08 fshahriar if(ntok < 2)
228 3c6ab185 2009-08-08 fshahriar continue;
229 3c6ab185 2009-08-08 fshahriar if(strcmp(tok[0], "pgfault") == 0)
230 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "fault %lld 100000\n", atoll(tok[1]));
231 3c6ab185 2009-08-08 fshahriar }
232 3c6ab185 2009-08-08 fshahriar }
233 3c6ab185 2009-08-08 fshahriar
234 3c6ab185 2009-08-08 fshahriar void
235 3c6ab185 2009-08-08 fshahriar xwireless(int first)
236 3c6ab185 2009-08-08 fshahriar {
237 3c6ab185 2009-08-08 fshahriar static int fd = -1;
238 3c6ab185 2009-08-08 fshahriar int i;
239 fa325e9b 2020-01-10 cross
240 3c6ab185 2009-08-08 fshahriar if(first){
241 3c6ab185 2009-08-08 fshahriar fd = open("/proc/net/wireless", OREAD);
242 3c6ab185 2009-08-08 fshahriar return;
243 3c6ab185 2009-08-08 fshahriar }
244 3c6ab185 2009-08-08 fshahriar
245 3c6ab185 2009-08-08 fshahriar readfile(fd);
246 3c6ab185 2009-08-08 fshahriar for(i=0; i<nline; i++){
247 3c6ab185 2009-08-08 fshahriar tokens(i);
248 3c6ab185 2009-08-08 fshahriar if(ntok < 3)
249 3c6ab185 2009-08-08 fshahriar continue;
250 3c6ab185 2009-08-08 fshahriar if(strcmp(tok[0], "wlan0:") == 0)
251 3c6ab185 2009-08-08 fshahriar Bprint(&bout, "802.11 =%lld 100\n", atoll(tok[2]));
252 3c6ab185 2009-08-08 fshahriar }
253 3c6ab185 2009-08-08 fshahriar }