Beispiel #1
0
unsigned int
proc_pid_cpu(pid_t pid)
{
  unsigned int total_pre, part_pre, total_post, part_post;

  proc_base *test = proc_create();
  proc_pid  *testinit = proc_pid_create(pid);
  
  proc_poll(test);
  proc_pid_poll(testinit);
  
  total_pre = proc_total(test);
  part_pre  = proc_pid_total(testinit);
  
  sleep(1);
  
  proc_poll(test);
  proc_pid_poll(testinit);
  
  total_post = proc_total(test);
  part_post  = proc_pid_total(testinit);
  
  proc_free(test);
  proc_pid_free(testinit);

  dprintf("total_pre = %u\n", total_pre);
  dprintf("part_pre = %u\n", part_pre);
  dprintf("total_post = %u\n", total_post);
  dprintf("part_post = %u\n", part_post);
  
  return ((part_post - part_pre) * 10000) / (total_post - total_pre);
}
static void
proc_parent(struct proc *p)
{
  proc_fini_parent(p);
  proc_poll(p, g->selfpipe[0]);
}