Chris@366: #include Chris@366: #include Chris@366: #include Chris@366: #include Chris@366: #include Chris@366: Chris@366: #include "pstats.h" Chris@366: Chris@366: static struct tms tms_beg; Chris@366: static struct tms tms_end; Chris@366: static int has_times = 0; Chris@366: Chris@366: Chris@366: void pstats_init(void) Chris@366: { Chris@366: has_times = times(&tms_beg) != -1; Chris@366: } Chris@366: Chris@366: static void tms_report(void) Chris@366: { Chris@366: double cputime; Chris@366: if (! has_times ) Chris@366: return; Chris@366: times(&tms_end); Chris@366: cputime = ( ((float)tms_end.tms_utime + tms_end.tms_stime + tms_end.tms_cutime + tms_end.tms_cstime ) - Chris@366: ((float)tms_beg.tms_utime + tms_beg.tms_stime + tms_beg.tms_cutime + tms_beg.tms_cstime ) ) Chris@366: / sysconf(_SC_CLK_TCK); Chris@366: fprintf(stderr,"\tcputime=%.3f\n" , cputime); Chris@366: } Chris@366: Chris@366: static void ps_report(void) Chris@366: { Chris@366: char buf[1024]; Chris@366: #ifdef __APPLE__ /* MAC OS X */ Chris@366: sprintf(buf,"ps -o command,majflt,minflt,rss,pagein,vsz -p %d 1>&2",getpid() ); Chris@366: #else /* GNU/Linux */ Chris@366: sprintf(buf,"ps -o comm,majflt,minflt,rss,drs,pagein,sz,trs,vsz %d 1>&2",getpid() ); Chris@366: #endif Chris@366: if (system( buf )==-1) { Chris@366: perror("system call to ps failed"); Chris@366: } Chris@366: } Chris@366: Chris@366: void pstats_report() Chris@366: { Chris@366: ps_report(); Chris@366: tms_report(); Chris@366: } Chris@366: