00001
00036 #include "util.h"
00037
00038 #if HAVE_SYS_TYPES_H
00039 # include<sys/types.h>
00040 #endif
00041
00042 #if HAVE_SYS_TIMES_H
00043 # include<sys/times.h>
00044 #endif
00045
00048
00049
00050
00051
00076 long
00077 util_cpu_time(void)
00078 {
00079 long t = 0;
00080
00081 #if HAVE_SYSCONF == 1
00082
00083
00084
00085 struct tms buffer;
00086 long nticks;
00087
00088 nticks = sysconf(_SC_CLK_TCK);
00089 times(&buffer);
00090 t = (long) (buffer.tms_utime * (1000.0/nticks));
00091
00092 #else
00093 # ifndef vms
00094
00095
00096
00097 struct tms buffer;
00098
00099 time(&buffer);
00100 t = buffer.tms_utime * 1000.0 / CLOCK_RESOLUTION;
00101
00102 # else
00103
00104
00105
00106 struct {int p1, p2, p3, p4;} buffer;
00107 static long ref_time;
00108 times(&buffer);
00109 t = buffer.p1 * 10;
00110 if (ref_time == 0)
00111 ref_time = t;
00112 t = t - ref_time;
00113
00114 # endif
00115 #endif
00116
00117 return t;
00118 }
00119
00146 long
00147 util_cpu_ctime(void)
00148 {
00149 long t = 0;
00150
00151 #if HAVE_SYSCONF == 1
00152
00153
00154
00155 struct tms buffer;
00156 long nticks;
00157
00158 nticks = sysconf(_SC_CLK_TCK);
00159 times(&buffer);
00160 t = (long) ((buffer.tms_utime + buffer.tms_cutime) * (1000.0/nticks));
00161
00162 #else
00163 # ifndef vms
00164
00165
00166
00167 struct tms buffer;
00168
00169 time(&buffer);
00170 t = (buffer.tms_utime + buffer.tms_cutime) * 1000.0 / CLOCK_RESOLUTION;
00171
00172 # else
00173
00174
00175
00176 struct {int p1, p2, p3, p4;} buffer;
00177 static long ref_time;
00178 times(&buffer);
00179 t = (buffer.p1 + buffer.p3) * 10;
00180 if (ref_time == 0)
00181 ref_time = t;
00182 t = t - ref_time;
00183
00184 # endif
00185 #endif
00186
00187 return t;
00188 }
00189