226 |
|
proc_state_ptr->process_name = strdup(kp_stats[i].ki_comm); |
227 |
|
/* Seems we don't have access to that bit of memory */ |
228 |
|
/*proc_state_ptr->proctitle = strdup(kp_stats[i].ki_args->ar_args);*/ |
229 |
+ |
proc_state_ptr->proctitle = NULL; |
230 |
|
|
231 |
|
proc_state_ptr->pid = kp_stats[i].ki_pid; |
232 |
|
proc_state_ptr->parent = kp_stats[i].ki_ppid; |
240 |
|
proc_state_ptr->proc_size = kp_stats[i].ki_size; |
241 |
|
/* This is in pages */ |
242 |
|
proc_state_ptr->proc_resident = kp_stats[i].ki_rssize * getpagesize(); |
243 |
< |
/* This seems to be in microseconds */ |
243 |
> |
/* This is in microseconds */ |
244 |
|
proc_state_ptr->time_spent = kp_stats[i].ki_runtime / 1000000; |
245 |
< |
proc_state_ptr->cpu_percent = kp_stats[i].ki_pctcpu; |
245 |
> |
proc_state_ptr->cpu_percent = ((double) kp_stats[i].ki_pctcpu / FSCALE) * 100.0; |
246 |
|
proc_state_ptr->nice = kp_stats[i].ki_nice; |
247 |
|
|
248 |
|
switch (kp_stats[i].ki_stat) { |
280 |
|
|
281 |
|
*ps = proc_state; |
282 |
|
return proc_state_size; |
283 |
+ |
} |
284 |
+ |
|
285 |
+ |
process_stat_t *get_process_stats() { |
286 |
+ |
static process_stat_t process_stat; |
287 |
+ |
proc_state_t *ps; |
288 |
+ |
int ps_size, x; |
289 |
+ |
|
290 |
+ |
process_stat.sleeping=0; |
291 |
+ |
process_stat.running=0; |
292 |
+ |
process_stat.zombie=0; |
293 |
+ |
process_stat.stopped=0; |
294 |
+ |
process_stat.total=0; |
295 |
+ |
|
296 |
+ |
ps_size = get_proc_snapshot(&ps); |
297 |
+ |
|
298 |
+ |
for(x = 0; x < ps_size; x++) { |
299 |
+ |
switch (ps->state) { |
300 |
+ |
case RUNNING: |
301 |
+ |
process_stat.running++; |
302 |
+ |
break; |
303 |
+ |
case SLEEPING: |
304 |
+ |
process_stat.sleeping++; |
305 |
+ |
break; |
306 |
+ |
case STOPPED: |
307 |
+ |
process_stat.stopped++; |
308 |
+ |
break; |
309 |
+ |
case ZOMBIE: |
310 |
+ |
process_stat.zombie++; |
311 |
+ |
break; |
312 |
+ |
} |
313 |
+ |
ps++; |
314 |
+ |
} |
315 |
+ |
|
316 |
+ |
process_stat.total = ps_size; |
317 |
+ |
|
318 |
+ |
return &process_stat; |
319 |
|
} |