diff --git a/yeeshell.c b/yeeshell.c index daa7dd0..ce61461 100644 --- a/yeeshell.c +++ b/yeeshell.c @@ -518,6 +518,7 @@ void parse_file(pid_t pid) FILE *fp; struct proc *p; int i; + int slot; sprintf(path, "/proc/%d/psinfo", pid); @@ -545,6 +546,7 @@ void parse_file(pid_t pid) } slot++; + slot = SLOT_NR(endpt); if (slot < 0 || slot >= nr_total) { @@ -698,3 +700,28 @@ void print_procs(struct proc *proc1, struct proc *proc2, int cputimemode) printf("%6.2f%% system", 100.0 * systemticks / total_ticks); printf("%6.2f%% in total\n", 100.0 * (systemticks + userticks) / total_ticks); } + +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 d109713..698baec 100644 --- a/yeeshell.h +++ b/yeeshell.h @@ -93,7 +93,11 @@ int builtin_history(char **args); int builtin_mytop(); /* mytop routine */ +int mytop_memory(); +int mytop_CPU(); void get_procs(); void parse_dir(); void parse_file(pid_t pid); -void getkinfo(); \ No newline at end of file +void getkinfo(); +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