Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "curl_setup.h"
00023 #include <curl/curl.h>
00024 #include "testutil.h"
00025 #include "memdebug.h"
00026
00027 #if defined(WIN32) && !defined(MSDOS)
00028
00029 struct timeval tutil_tvnow(void)
00030 {
00031
00032
00033
00034
00035
00036 struct timeval now;
00037 DWORD milliseconds = GetTickCount();
00038 now.tv_sec = milliseconds / 1000;
00039 now.tv_usec = (milliseconds % 1000) * 1000;
00040 return now;
00041 }
00042
00043 #elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
00044
00045 struct timeval tutil_tvnow(void)
00046 {
00047
00048
00049
00050
00051
00052
00053
00054 struct timeval now;
00055 struct timespec tsnow;
00056 if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
00057 now.tv_sec = tsnow.tv_sec;
00058 now.tv_usec = tsnow.tv_nsec / 1000;
00059 }
00060
00061
00062
00063
00064
00065 #ifdef HAVE_GETTIMEOFDAY
00066 else
00067 (void)gettimeofday(&now, NULL);
00068 #else
00069 else {
00070 now.tv_sec = (long)time(NULL);
00071 now.tv_usec = 0;
00072 }
00073 #endif
00074 return now;
00075 }
00076
00077 #elif defined(HAVE_GETTIMEOFDAY)
00078
00079 struct timeval tutil_tvnow(void)
00080 {
00081
00082
00083
00084
00085
00086 struct timeval now;
00087 (void)gettimeofday(&now, NULL);
00088 return now;
00089 }
00090
00091 #else
00092
00093 struct timeval tutil_tvnow(void)
00094 {
00095
00096
00097
00098 struct timeval now;
00099 now.tv_sec = (long)time(NULL);
00100 now.tv_usec = 0;
00101 return now;
00102 }
00103
00104 #endif
00105
00106
00107
00108
00109
00110
00111
00112 long tutil_tvdiff(struct timeval newer, struct timeval older)
00113 {
00114 return (newer.tv_sec-older.tv_sec)*1000+
00115 (newer.tv_usec-older.tv_usec)/1000;
00116 }
00117
00118
00119
00120
00121
00122
00123 double tutil_tvdiff_secs(struct timeval newer, struct timeval older)
00124 {
00125 if(newer.tv_sec != older.tv_sec)
00126 return (double)(newer.tv_sec-older.tv_sec)+
00127 (double)(newer.tv_usec-older.tv_usec)/1000000.0;
00128 else
00129 return (double)(newer.tv_usec-older.tv_usec)/1000000.0;
00130 }
00131
00132
00133 long tutil_tvlong(struct timeval t1)
00134 {
00135 return t1.tv_sec;
00136 }
00137