Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

mdp_timer.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 #ifndef NO_POSIX
00014 
00015 double walltime() {
00016   double mic, time;
00017   double mega = 0.000001;
00018   struct timeval tp;
00019 #if defined(HAVE_NO_TIMEZONE) 
00020   struct timezone {
00021     int  tz_minuteswest; // minutes of Greenwich 
00022     int  tz_dsttime;     // type of dst correction 
00023   } tzp = {0,0};
00024 #else
00025   struct timezone tzp ={0,0};
00026 #endif
00027   static long base_sec = 0;
00028   static long base_usec = 0;
00029   
00030   gettimeofday(&tp,&tzp);
00031   if (base_sec == 0) {
00032     base_sec = tp.tv_sec;
00033     base_usec = tp.tv_usec;
00034   }
00035   
00036   time = (double) (tp.tv_sec - base_sec);
00037   mic = (double) (tp.tv_usec - base_usec);
00038   time = (time + mic * mega);
00039   return(time);
00040 }
00041 
00042 string getname() {
00043   static char tmp[1024];
00044   gethostname(tmp,1024);
00045   return string(tmp);
00046 }
00047 
00048 void getcpuusage(double &user, double &total) {
00049   static long t[4], s[4];
00050   double sum, usage[4];
00051   FILE *fp;
00052   s[0]=t[0];
00053   s[1]=t[1];
00054   s[2]=t[2];
00055   s[3]=t[3];
00056   fp=fopen("/proc/stat", "r");
00057   fscanf(fp, "cpu  %li%li%li%li",&t[0],&t[1],&t[2],&t[3]);
00058   fclose(fp);
00059   usage[0]=(t[0]-s[0]);
00060   usage[1]=(t[1]-s[1]);
00061   usage[2]=(t[2]-s[2]);
00062   usage[3]=(t[3]-s[3]);
00063   sum=usage[0]+usage[1]+usage[2]+usage[3];
00064   usage[0]/=sum;
00065   usage[1]/=sum;
00066   usage[2]/=sum;
00067   usage[3]/=sum;
00068   user=100.0*(usage[0]); // user usage
00069   total=100.0*(usage[0]+usage[1]+usage[2]); // cpu usage
00070 }
00071 #else
00072 
00073 double walltime() {
00074   return (double) clock()/CLOCKS_PER_SEC;
00075 }
00076 
00077 string getname() {
00078   return string("localhost");
00079 }
00080 
00081 void getcpuusage(double &user, double &total) {
00082   user=total=0;
00083 }
00084 
00085 #endif

Generated on Sun Feb 27 15:12:21 2005 by  doxygen 1.4.1