static inline uint64 vtsc(int64 MHz) { if (vtsc_syscall.num > 0) { return syscall(vtsc_syscall.num); } struct rusage usage; getrusage(RUSAGE_SELF, &usage); return tv_to_cycles(usage.ru_utime, MHz) + tv_to_cycles(usage.ru_stime, MHz); }
static inline uint64_t cpuTime(int64_t MHz) { #ifdef CLOCK_THREAD_CPUTIME_ID int64_t rval = Vdso::ClockGetTimeNS(CLOCK_THREAD_CPUTIME_ID); if (rval >= 0) { return rval; } #endif struct rusage usage; getrusage(RUSAGE_SELF, &usage); return tv_to_cycles(usage.ru_utime, MHz) + tv_to_cycles(usage.ru_stime, MHz); }
static inline uint64 vtsc(int64 MHz) { int64 rval = Util::Vdso::ClockGetTimeNS(CLOCK_THREAD_CPUTIME_ID); if (rval >= 0) { return rval; } if (vtsc_syscall.num > 0) { return syscall(vtsc_syscall.num); } struct rusage usage; getrusage(RUSAGE_SELF, &usage); return tv_to_cycles(usage.ru_utime, MHz) + tv_to_cycles(usage.ru_stime, MHz); }