1
#include <qstringlist.h>
3
#include <qtextstream.h>
11
QTime CpuStat::upTime() const
14
for ( int i = 0; i < NValues; i++ )
15
t = t.addSecs(int(procValues[i] / 100));
20
void CpuStat::statistic(double &user, double &system)
22
double values[NValues];
26
double userDelta = values[User] + values[Nice]
27
- procValues[User] - procValues[Nice];
28
double systemDelta = values[System] - procValues[System];
30
double totalDelta = 0;
31
for ( int i = 0; i < NValues; i++ )
32
totalDelta += values[i] - procValues[i];
34
user = userDelta / totalDelta * 100.0;
35
system = systemDelta / totalDelta * 100.0;
37
for ( int j = 0; j < NValues; j++ )
38
procValues[j] = values[j];
41
void CpuStat::lookUp(double values[NValues]) const
43
QFile file("/proc/stat");
44
#if QT_VERSION >= 0x040000
45
if ( !file.open(QIODevice::ReadOnly) )
47
if ( !file.open(IO_ReadOnly) )
50
static double dummyValues[][NValues] =
52
{ 103726, 0, 23484, 819556 },
53
{ 103783, 0, 23489, 819604 },
54
{ 103798, 0, 23490, 819688 },
55
{ 103820, 0, 23490, 819766 },
56
{ 103840, 0, 23493, 819843 },
57
{ 103875, 0, 23499, 819902 },
58
{ 103917, 0, 23504, 819955 },
59
{ 103950, 0, 23508, 820018 },
60
{ 103987, 0, 23510, 820079 },
61
{ 104020, 0, 23513, 820143 },
62
{ 104058, 0, 23514, 820204 },
63
{ 104099, 0, 23520, 820257 },
64
{ 104121, 0, 23525, 820330 },
65
{ 104159, 0, 23530, 820387 },
66
{ 104176, 0, 23534, 820466 },
67
{ 104215, 0, 23538, 820523 },
68
{ 104245, 0, 23541, 820590 },
69
{ 104267, 0, 23545, 820664 },
70
{ 104311, 0, 23555, 820710 },
71
{ 104355, 0, 23565, 820756 },
72
{ 104367, 0, 23567, 820842 },
73
{ 104383, 0, 23572, 820921 },
74
{ 104396, 0, 23577, 821003 },
75
{ 104413, 0, 23579, 821084 },
76
{ 104446, 0, 23588, 821142 },
77
{ 104521, 0, 23594, 821161 },
78
{ 104611, 0, 23604, 821161 },
79
{ 104708, 0, 23607, 821161 },
80
{ 104804, 0, 23611, 821161 },
81
{ 104895, 0, 23620, 821161 },
82
{ 104993, 0, 23622, 821161 },
83
{ 105089, 0, 23626, 821161 },
84
{ 105185, 0, 23630, 821161 },
85
{ 105281, 0, 23634, 821161 },
86
{ 105379, 0, 23636, 821161 },
87
{ 105472, 0, 23643, 821161 },
88
{ 105569, 0, 23646, 821161 },
89
{ 105666, 0, 23649, 821161 },
90
{ 105763, 0, 23652, 821161 },
91
{ 105828, 0, 23661, 821187 },
92
{ 105904, 0, 23666, 821206 },
93
{ 105999, 0, 23671, 821206 },
94
{ 106094, 0, 23676, 821206 },
95
{ 106184, 0, 23686, 821206 },
96
{ 106273, 0, 23692, 821211 },
97
{ 106306, 0, 23700, 821270 },
98
{ 106341, 0, 23703, 821332 },
99
{ 106392, 0, 23709, 821375 },
100
{ 106423, 0, 23715, 821438 },
101
{ 106472, 0, 23721, 821483 },
102
{ 106531, 0, 23727, 821517 },
103
{ 106562, 0, 23732, 821582 },
104
{ 106597, 0, 23736, 821643 },
105
{ 106633, 0, 23737, 821706 },
106
{ 106666, 0, 23742, 821768 },
107
{ 106697, 0, 23744, 821835 },
108
{ 106730, 0, 23748, 821898 },
109
{ 106765, 0, 23751, 821960 },
110
{ 106799, 0, 23754, 822023 },
111
{ 106831, 0, 23758, 822087 },
112
{ 106862, 0, 23761, 822153 },
113
{ 106899, 0, 23763, 822214 },
114
{ 106932, 0, 23766, 822278 },
115
{ 106965, 0, 23768, 822343 },
116
{ 107009, 0, 23771, 822396 },
117
{ 107040, 0, 23775, 822461 },
118
{ 107092, 0, 23780, 822504 },
119
{ 107143, 0, 23787, 822546 },
120
{ 107200, 0, 23795, 822581 },
121
{ 107250, 0, 23803, 822623 },
122
{ 107277, 0, 23810, 822689 },
123
{ 107286, 0, 23810, 822780 },
124
{ 107313, 0, 23817, 822846 },
125
{ 107325, 0, 23818, 822933 },
126
{ 107332, 0, 23818, 823026 },
127
{ 107344, 0, 23821, 823111 },
128
{ 107357, 0, 23821, 823198 },
129
{ 107368, 0, 23823, 823284 },
130
{ 107375, 0, 23824, 823377 },
131
{ 107386, 0, 23825, 823465 },
132
{ 107396, 0, 23826, 823554 },
133
{ 107422, 0, 23830, 823624 },
134
{ 107434, 0, 23831, 823711 },
135
{ 107456, 0, 23835, 823785 },
136
{ 107468, 0, 23838, 823870 },
137
{ 107487, 0, 23840, 823949 },
138
{ 107515, 0, 23843, 824018 },
139
{ 107528, 0, 23846, 824102 },
140
{ 107535, 0, 23851, 824190 },
141
{ 107548, 0, 23853, 824275 },
142
{ 107562, 0, 23857, 824357 },
143
{ 107656, 0, 23863, 824357 },
144
{ 107751, 0, 23868, 824357 },
145
{ 107849, 0, 23870, 824357 },
146
{ 107944, 0, 23875, 824357 },
147
{ 108043, 0, 23876, 824357 },
148
{ 108137, 0, 23882, 824357 },
149
{ 108230, 0, 23889, 824357 },
150
{ 108317, 0, 23902, 824357 },
151
{ 108412, 0, 23907, 824357 },
152
{ 108511, 0, 23908, 824357 },
153
{ 108608, 0, 23911, 824357 },
154
{ 108704, 0, 23915, 824357 },
155
{ 108801, 0, 23918, 824357 },
156
{ 108891, 0, 23928, 824357 },
157
{ 108987, 0, 23932, 824357 },
158
{ 109072, 0, 23943, 824361 },
159
{ 109079, 0, 23943, 824454 },
160
{ 109086, 0, 23944, 824546 },
161
{ 109098, 0, 23950, 824628 },
162
{ 109108, 0, 23955, 824713 },
163
{ 109115, 0, 23957, 824804 },
164
{ 109122, 0, 23958, 824896 },
165
{ 109132, 0, 23959, 824985 },
166
{ 109142, 0, 23961, 825073 },
167
{ 109146, 0, 23962, 825168 },
168
{ 109153, 0, 23964, 825259 },
169
{ 109162, 0, 23966, 825348 },
170
{ 109168, 0, 23969, 825439 },
171
{ 109176, 0, 23971, 825529 },
172
{ 109185, 0, 23974, 825617 },
173
{ 109193, 0, 23977, 825706 },
174
{ 109198, 0, 23978, 825800 },
175
{ 109206, 0, 23978, 825892 },
176
{ 109212, 0, 23981, 825983 },
177
{ 109219, 0, 23981, 826076 },
178
{ 109225, 0, 23981, 826170 },
179
{ 109232, 0, 23984, 826260 },
180
{ 109242, 0, 23984, 826350 },
181
{ 109255, 0, 23986, 826435 },
182
{ 109268, 0, 23987, 826521 },
183
{ 109283, 0, 23990, 826603 },
184
{ 109288, 0, 23991, 826697 },
185
{ 109295, 0, 23993, 826788 },
186
{ 109308, 0, 23994, 826874 },
187
{ 109322, 0, 24009, 826945 },
188
{ 109328, 0, 24011, 827037 },
189
{ 109338, 0, 24012, 827126 },
190
{ 109347, 0, 24012, 827217 },
191
{ 109354, 0, 24017, 827305 },
192
{ 109367, 0, 24017, 827392 },
193
{ 109371, 0, 24019, 827486 },
195
static int counter = 0;
197
for ( int i = 0; i < NValues; i++ )
198
values[i] = dummyValues[counter][i];
200
counter = (counter + 1)
201
% (sizeof(dummyValues) / sizeof(dummyValues[0]));
205
QTextStream textStream(&file);
207
QString line = textStream.readLine();
208
#if QT_VERSION < 0x040000
209
line = line.stripWhiteSpace();
211
line = line.trimmed();
213
if ( line.startsWith("cpu ") )
215
const QStringList valueList =
216
#if QT_VERSION < 0x040000
217
QStringList::split(" ", line);
219
line.split(" ", QString::SkipEmptyParts);
221
if ( valueList.count() >= 5 )
223
for ( int i = 0; i < NValues; i++ )
224
values[i] = valueList[i+1].toDouble();
229
#if QT_VERSION < 0x040000
230
while(!textStream.eof());
232
while(!textStream.atEnd());