#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //************************************************************ typedef unsigned long long int UINT64; UINT64 readTSC(void) { UINT64 ts; __asm__ volatile(".byte 0x0f,0x31" : "=A" (ts)); return ts; } UINT64 cyclesElapsed(UINT64 stopTS, UINT64 startTS) { return (stopTS - startTS); } double mhz(int sleeptime) { UINT64 startTSC = 0; UINT64 stopTSC = 0; UINT64 cycleCnt = 0; UINT64 instCnt = 0; double clkRate = 0.0; startTSC = readTSC(); usleep(sleeptime); stopTSC = readTSC(); cycleCnt = cyclesElapsed(stopTSC, startTSC); clkRate = ((double)cycleCnt)/1000000.0; printf("Based on usleep accuracy, CPU clk rate = %lu clks/sec,", cycleCnt); printf(" %7.1f Mhz\n", clkRate); return clkRate; } //************************************************************ void process(struct rusage *p, char *when) { printf("%s\n", when); printf("user time used %8d\n", p->ru_utime.tv_usec); printf("system time used %8d\n", p->ru_stime.tv_usec); } unsigned long GetProcessTime() { char procFilename[256] ; char buffer[1024] ; pid_t pid = getpid() ; pid_t tid = syscall(224) ; cout<<"Pid == "<