diff --git a/yeeshell.c b/yeeshell.c index 1e06d86..2352238 100644 --- a/yeeshell.c +++ b/yeeshell.c @@ -677,4 +677,25 @@ void print_procs(struct proc *proc1, struct proc *proc2, int cputimemode) printf("%6.2f%% in total\n", 100.0 * (systemticks + userticks) / total_ticks); //printf("%6.2f%% kernel, ", 100.0 * kernelticks/ total_ticks); //printf("%6.2f%% idle", 100.0 * idleticks / total_ticks); -} \ No newline at end of file +} + +u64_t cputicks(struct proc *p1, struct proc *p2, int timemode) +{ + int i; + u64_t t = 0; + for (i = 0; i < CPUTIMENAMES; i++) + { + if (!CPUTIME(timemode, i)) + continue; + if (p1->p_endpoint == p2->p_endpoint) + { + t = t + p2->p_cpucycles[i] - p1->p_cpucycles[i]; + } + else + { + t = t + p2->p_cpucycles[i]; + } + } + + return t; +} diff --git a/yeeshell.h b/yeeshell.h index ba54bdd..c98bf15 100644 --- a/yeeshell.h +++ b/yeeshell.h @@ -100,4 +100,5 @@ void get_procs(); void parse_dir(); void parse_file(pid_t pid); void getkinfo(); -void print_procs(struct proc *proc1, struct proc *proc2, int cputimemode); \ No newline at end of file +void print_procs(struct proc *proc1, struct proc *proc2, int cputimemode); +u64_t cputicks(struct proc *p1, struct proc *p2, int timemode); \ No newline at end of file