int GetProcessingTime(SYSTIMES *Systimes, SFBASE *sfBase) { #ifdef LINUX_SMP sfProcessProcPidStats(&(sfBase->sfProcPidStats)); #else struct rusage rusage; #ifndef WIN32 if(getrusage(RUSAGE_SELF, &rusage) < 0 ) #endif /* !WIN32 */ { rusage.ru_utime.tv_sec = 0; rusage.ru_utime.tv_usec = 0; rusage.ru_stime.tv_sec = 0; rusage.ru_stime.tv_usec = 0; } Systimes->usertime = ((double)rusage.ru_utime.tv_sec + ((double)rusage.ru_utime.tv_usec * 1.0e-6)) - sfBase->usertime_sec; Systimes->systemtime = ((double)rusage.ru_stime.tv_sec + ((double)rusage.ru_stime.tv_usec * 1.0e-6)) - sfBase->systemtime_sec; Systimes->totaltime = Systimes->usertime + Systimes->systemtime; #endif /* LINUX_SMP */ return 0; }
int GetProcessingTime(SYSTIMES *Systimes, SFBASE *sfBase) { #ifndef LINUX_SMP int rusageRet = -1; #endif int todRet = -1; struct timeval tvTime; #ifdef LINUX_SMP if(sfProcessProcPidStats(&(sfBase->sfProcPidStats))) return -1; todRet = gettimeofday(&tvTime, NULL); #else struct rusage rusage; #ifndef WIN32 rusageRet = getrusage(RUSAGE_SELF, &rusage); #endif /* !WIN32 */ todRet = gettimeofday(&tvTime, NULL); if (rusageRet < 0) { rusage.ru_utime.tv_sec = 0; rusage.ru_utime.tv_usec = 0; rusage.ru_stime.tv_sec = 0; rusage.ru_stime.tv_usec = 0; } Systimes->usertime = ((double)rusage.ru_utime.tv_sec + ((double)rusage.ru_utime.tv_usec * 1.0e-6)) - sfBase->usertime_sec; Systimes->systemtime = ((double)rusage.ru_stime.tv_sec + ((double)rusage.ru_stime.tv_usec * 1.0e-6)) - sfBase->systemtime_sec; Systimes->totaltime = Systimes->usertime + Systimes->systemtime; #endif /* LINUX_SMP */ if (todRet < 0) { return todRet; } Systimes->realtime = ((double)tvTime.tv_sec + ((double)tvTime.tv_usec * 1.0e-6)) - sfBase->realtime_sec; return 0; }