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]); }