23 ///\file |
23 ///\file |
24 ///\brief Tools for measuring cpu usage |
24 ///\brief Tools for measuring cpu usage |
25 |
25 |
26 |
26 |
27 #ifdef WIN32 |
27 #ifdef WIN32 |
28 |
28 #include <lemon/bits/mingw32_time.h> |
29 #include <windows.h> |
|
30 #include <time.h> |
|
31 #include "dos.h" |
|
32 |
|
33 int gettimeofday(struct timeval * tp, struct timezone *) { |
|
34 SYSTEMTIME systime; |
|
35 |
|
36 if (tp) { |
|
37 |
|
38 struct tm tmrec; |
|
39 time_t theTime = time(NULL); |
|
40 |
|
41 tmrec = *localtime(&theTime); |
|
42 tp->tv_sec = mktime(&tmrec); |
|
43 GetLocalTime(&systime); /* system time */ |
|
44 |
|
45 tp->tv_usec = systime.wMilliseconds * 1000; |
|
46 |
|
47 } |
|
48 |
|
49 return 0; |
|
50 |
|
51 } |
|
52 |
|
53 struct tms { |
|
54 long tms_utime; |
|
55 long tms_stime; |
|
56 long tms_cutime; |
|
57 long tms_cstime; |
|
58 }; |
|
59 |
|
60 static long filetime_to_clock(FILETIME *ft) |
|
61 { |
|
62 __int64 qw = ft->dwHighDateTime; |
|
63 qw <<= 32; |
|
64 qw |= ft->dwLowDateTime; |
|
65 qw /= 10000; /* File time ticks at 0.1uS, clock at 1mS */ |
|
66 return (long) qw; |
|
67 |
|
68 } |
|
69 |
|
70 int times(struct tms *tmbuf) |
|
71 { |
|
72 FILETIME create, exit, kernel, user; |
|
73 if (GetProcessTimes(GetCurrentProcess(),&create, &exit, &kernel, &user)) { |
|
74 tmbuf->tms_utime = filetime_to_clock(&user); |
|
75 tmbuf->tms_stime = filetime_to_clock(&kernel); |
|
76 tmbuf->tms_cutime = 0; |
|
77 tmbuf->tms_cstime = 0; |
|
78 } |
|
79 else { |
|
80 tmbuf->tms_utime = clock(); |
|
81 tmbuf->tms_stime = 0; |
|
82 tmbuf->tms_cutime = 0; |
|
83 tmbuf->tms_cstime = 0; |
|
84 } |
|
85 return 0; |
|
86 } |
|
87 |
|
88 #define _SC_CLK_TCK 1 |
|
89 |
|
90 int sysconf(int) |
|
91 { |
|
92 return 1; |
|
93 } |
|
94 |
|
95 #else |
29 #else |
96 #include <sys/times.h> |
30 #include <sys/times.h> |
97 #endif |
31 #endif |
98 |
32 |
99 #include <sys/time.h> |
33 #include <sys/time.h> |