Loading apps/apps.c +95 −1 Original line number Diff line number Diff line Loading @@ -2307,6 +2307,9 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx) BIO_free(out); } /* * Platform-specific sections */ #if defined(_WIN32) # ifdef fileno # undef fileno Loading Loading @@ -2363,7 +2366,98 @@ ok: if (tfrom!=NULL && tfrom!=(TCHAR *)from) free(tfrom); return ret; } #endif /* app_tminterval section */ #if defined(_WIN32) double app_tminterval(int stop,int usertime) { FILETIME now; double ret=0; static ULARGE_INTEGER tmstart; #ifdef _WIN32_WINNT static HANDLE proc=NULL; if (proc==NULL) { if (GetVersion() < 0x80000000) proc = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE, GetCurrentProcessId()); if (proc==NULL) proc = (HANDLE)-1; } if (usertime && proc!=(HANDLE)-1) { FILETIME junk; GetProcessTimes(proc,&junk,&junk,&junk,&now); } else #endif { SYSTEMTIME systime; GetSystemTime(&systime); SystemTimeToFileTime(&systime,&now); } if (stop==TM_START) { tmstart.u.LowPart = now.dwLowDateTime; tmstart.u.HighPart = now.dwHighDateTime; } else { ULARGE_INTEGER tmstop; tmstop.u.LowPart = now.dwLowDateTime; tmstop.u.HighPart = now.dwHighDateTime; ret = (tmstop.QuadPart - tmstart.QuadPart)*1e-7; } return (ret); } #elif defined(_SC_CLK_TCK) /* by means of unistd.h */ #include <sys/times.h> double app_tminterval(int stop,int usertime) { double ret = 0; struct tms rus; clock_t now = times(&rus); static clock_t tmstart; if (usertime) now = rus.tms_utime; if (stop==TMSTART) tmstart = now; else ret = (now - tmstart)/(double)sysconf(_SC_CLK_TCK); return (ret); } #else #include <sys/time.h> #include <sys/resource.h> double app_tminterval(int stop,int usertime) { double ret = 0; struct rusage rus; struct timeval now; static struct timeval tmstart; if (usertime) getrusage(RUSAGE_SELF,&rus), now = rus.ru_time; else gettimeofday(&now,NULL); if (stop==TMSTART) tmstart = now; else ret = ( (now.tv_sec+now.tv_usec*1e-6) - (tmstart.tv_sec+tmstart.tv_usec*1e-6) ); return ret; } #endif /* app_isdir section */ #ifdef _WIN32 int app_isdir(const char *name) { HANDLE hList; Loading Loading @@ -2411,6 +2505,7 @@ int app_isdir(const char *name) } #endif /* raw_read|write section */ #if defined(_WIN32) && defined(STD_INPUT_HANDLE) int raw_read_stdin(void *buf,int siz) { Loading @@ -2436,4 +2531,3 @@ int raw_write_stdout(void *buf,int siz) int raw_write_stdout(const void *buf,int siz) { return write(fileno(stdout),buf,siz); } #endif apps/apps.h +4 −0 Original line number Diff line number Diff line Loading @@ -314,4 +314,8 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx); int app_isdir(const char *); int raw_read_stdin(void *,int); int raw_write_stdout(const void *,int); #define TM_START 0 #define TM_STOP 1 double app_tminterval (int stop,int usertime); #endif apps/s_time.c +1 −104 Original line number Diff line number Diff line Loading @@ -85,54 +85,6 @@ #include OPENSSL_UNISTD #endif #if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) #define TIMES #endif #ifndef _IRIX #include <time.h> #endif #ifdef TIMES #include <sys/types.h> #include <sys/times.h> #endif /* Depending on the VMS version, the tms structure is perhaps defined. The __TMS macro will show if it was. If it wasn't defined, we should undefine TIMES, since that tells the rest of the program how things should be handled. -- Richard Levitte */ #if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) #undef TIMES #endif #if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) #include <sys/timeb.h> #endif #if defined(sun) || defined(__ultrix) #define _POSIX_SOURCE #include <limits.h> #include <sys/param.h> #endif /* The following if from times(3) man page. It may need to be changed */ #ifndef HZ # ifdef _SC_CLK_TCK # define HZ ((double)sysconf(_SC_CLK_TCK)) # else # ifndef CLK_TCK # ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ # define HZ 100.0 # else /* _BSD_CLK_TCK_ */ # define HZ ((double)_BSD_CLK_TCK_) # endif # else /* CLK_TCK */ # define HZ ((double)CLK_TCK) # endif # endif #endif #undef PROG #define PROG s_time_main Loading Loading @@ -372,62 +324,7 @@ bad: static double tm_Time_F(int s) { static double ret; #ifdef TIMES static struct tms tstart,tend; if(s == START) { times(&tstart); return(0); } else { times(&tend); ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ; return((ret == 0.0)?1e-6:ret); } #elif defined(OPENSSL_SYS_NETWARE) static clock_t tstart,tend; if (s == START) { tstart=clock(); return(0); } else { tend=clock(); ret=(double)((double)(tend)-(double)(tstart)); return((ret < 0.001)?0.001:ret); } #elif defined(OPENSSL_SYS_VXWORKS) { static unsigned long tick_start, tick_end; if( s == START ) { tick_start = tickGet(); return 0; } else { tick_end = tickGet(); ret = (double)(tick_end - tick_start) / (double)sysClkRateGet(); return((ret == 0.0)?1e-6:ret); } } #else /* !times() */ static struct timeb tstart,tend; long i; if(s == START) { ftime(&tstart); return(0); } else { ftime(&tend); i=(long)tend.millitm-(long)tstart.millitm; ret=((double)(tend.time-tstart.time))+((double)i)/1000.0; return((ret == 0.0)?1e-6:ret); } #endif return app_tminterval(s,1); } /*********************************************************************** Loading apps/speed.c +32 −227 Original line number Diff line number Diff line Loading @@ -108,53 +108,8 @@ #include <signal.h> #endif #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX) # define USE_TOD #elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) # define TIMES #endif #if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) /* FIXME */ # define TIMEB #endif #if defined(OPENSSL_SYS_NETWARE) #undef TIMES #undef TIMEB #include <time.h> #endif #ifndef _IRIX # include <time.h> #endif #ifdef TIMES # include <sys/types.h> # include <sys/times.h> #endif #ifdef USE_TOD # include <sys/time.h> # include <sys/resource.h> #endif /* Depending on the VMS version, the tms structure is perhaps defined. The __TMS macro will show if it was. If it wasn't defined, we should undefine TIMES, since that tells the rest of the program how things should be handled. -- Richard Levitte */ #if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) #undef TIMES #endif #ifdef TIMEB #include <sys/timeb.h> #endif #if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) #error "It seems neither struct tms nor struct timeb is supported in this platform!" #endif #if defined(sun) || defined(__ultrix) #define _POSIX_SOURCE #include <limits.h> #include <sys/param.h> #ifdef _WIN32 #include <windows.h> #endif #include <openssl/bn.h> Loading Loading @@ -220,34 +175,6 @@ #include <openssl/ecdh.h> #endif /* * The following "HZ" timing stuff should be sync'd up with the code in * crypto/tmdiff.[ch]. That appears to try to do the same job, though I think * this code is more up to date than libcrypto's so there may be features to * migrate over first. This is used in two places further down AFAICS. * The point is that nothing in openssl actually *uses* that tmdiff stuff, so * either speed.c should be using it or it should go because it's obviously not * useful enough. Anyone want to do a janitorial job on this? */ /* The following if from times(3) man page. It may need to be changed */ #ifndef HZ # if defined(_SC_CLK_TCK) \ && (!defined(OPENSSL_SYS_VMS) || __CTRL_VER >= 70000000) # define HZ sysconf(_SC_CLK_TCK) # else # ifndef CLK_TCK # ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ # define HZ 100.0 # else /* _BSD_CLK_TCK_ */ # define HZ ((double)_BSD_CLK_TCK_) # endif # else /* CLK_TCK */ # define HZ ((double)CLK_TCK) # endif # endif #endif #if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE) # define HAVE_FORK 1 #endif Loading Loading @@ -319,141 +246,46 @@ static SIGRETTYPE sig_done(int sig) #define START 0 #define STOP 1 #if defined(OPENSSL_SYS_NETWARE) #if defined(_WIN32) /* for NetWare the best we can do is use clock() which returns the * time, in hundredths of a second, since the NLM began executing */ static double Time_F(int s) { double ret; #define SIGALRM static unsigned int lapse,schlock; static void alarm(unsigned int secs) { lapse = secs*1000; } static clock_t tstart,tend; if (s == START) static DWORD WINAPI sleepy(VOID *arg) { tstart=clock(); return(0); } else { tend=clock(); ret=(double)((double)(tend)-(double)(tstart)); return((ret < 0.001)?0.001:ret); } schlock = 1; Sleep(lapse); run = 0; return 0; } #else static double Time_F(int s) { double ret; #ifdef USE_TOD if(usertime) { static struct rusage tstart,tend; getrusage_used = 1; if (s == START) { getrusage(RUSAGE_SELF,&tstart); return(0); } else { long i; getrusage(RUSAGE_SELF,&tend); i=(long)tend.ru_utime.tv_usec-(long)tstart.ru_utime.tv_usec; ret=((double)(tend.ru_utime.tv_sec-tstart.ru_utime.tv_sec)) +((double)i)/1000000.0; return((ret < 0.001)?0.001:ret); } } else { static struct timeval tstart,tend; long i; gettimeofday_used = 1; if (s == START) { gettimeofday(&tstart,NULL); return(0); } else HANDLE thr; schlock = 0; thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL); if (thr==NULL) { gettimeofday(&tend,NULL); i=(long)tend.tv_usec-(long)tstart.tv_usec; ret=((double)(tend.tv_sec-tstart.tv_sec))+((double)i)/1000000.0; return((ret < 0.001)?0.001:ret); DWORD ret=GetLastError(); BIO_printf(bio_err,"unable to CreateThread (%d)",ret); ExitProcess(ret); } CloseHandle(thr); /* detach the thread */ while (!schlock) Sleep(0); /* scheduler spinlock */ } #else /* ndef USE_TOD */ # ifdef TIMES if (usertime) { static struct tms tstart,tend; times_used = 1; if (s == START) { times(&tstart); return(0); } else { times(&tend); ret = HZ; ret=(double)(tend.tms_utime-tstart.tms_utime) / ret; return((ret < 1e-3)?1e-3:ret); } } # endif /* times() */ # if defined(TIMES) && defined(TIMEB) else # endif # ifdef OPENSSL_SYS_VXWORKS { static unsigned long tick_start, tick_end; if( s == START ) { tick_start = tickGet(); return 0; return app_tminterval(s,usertime); } else { tick_end = tickGet(); ret = (double)(tick_end - tick_start) / (double)sysClkRateGet(); return((ret < 0.001)?0.001:ret); } } # elif defined(TIMEB) { static struct timeb tstart,tend; long i; #else ftime_used = 1; if (s == START) { ftime(&tstart); return(0); } else static double Time_F(int s) { ftime(&tend); i=(long)tend.millitm-(long)tstart.millitm; ret=((double)(tend.time-tstart.time))+((double)i)/1000.0; return((ret < 0.001)?0.001:ret); return app_tminterval(s,usertime); } } # endif #endif } #endif /* if defined(OPENSSL_SYS_NETWARE) */ #ifndef OPENSSL_NO_ECDH Loading Loading @@ -1508,7 +1340,9 @@ int MAIN(int argc, char **argv) #else #define COND(c) (run) #define COUNT(d) (count) #ifndef _WIN32 signal(SIGALRM,sig_done); #endif #endif /* SIGALRM */ #ifndef OPENSSL_NO_MD2 Loading Loading @@ -2295,35 +2129,6 @@ show_res: printf("%s ",BF_options()); #endif fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS)); printf("available timing options: "); #ifdef TIMES printf("TIMES "); #endif #ifdef TIMEB printf("TIMEB "); #endif #ifdef USE_TOD printf("USE_TOD "); #endif #ifdef HZ #define as_string(s) (#s) { double dbl = HZ; printf("HZ=%g", dbl); } # ifdef _SC_CLK_TCK printf(" [sysconf value]"); # endif #endif printf("\n"); printf("timing function used: %s%s%s%s%s%s%s\n", (ftime_used ? "ftime" : ""), (ftime_used + times_used > 1 ? "," : ""), (times_used ? "times" : ""), (ftime_used + times_used + gettimeofday_used > 1 ? "," : ""), (gettimeofday_used ? "gettimeofday" : ""), (ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""), (getrusage_used ? "getrusage" : "")); } if (pr_header) Loading Loading
apps/apps.c +95 −1 Original line number Diff line number Diff line Loading @@ -2307,6 +2307,9 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx) BIO_free(out); } /* * Platform-specific sections */ #if defined(_WIN32) # ifdef fileno # undef fileno Loading Loading @@ -2363,7 +2366,98 @@ ok: if (tfrom!=NULL && tfrom!=(TCHAR *)from) free(tfrom); return ret; } #endif /* app_tminterval section */ #if defined(_WIN32) double app_tminterval(int stop,int usertime) { FILETIME now; double ret=0; static ULARGE_INTEGER tmstart; #ifdef _WIN32_WINNT static HANDLE proc=NULL; if (proc==NULL) { if (GetVersion() < 0x80000000) proc = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE, GetCurrentProcessId()); if (proc==NULL) proc = (HANDLE)-1; } if (usertime && proc!=(HANDLE)-1) { FILETIME junk; GetProcessTimes(proc,&junk,&junk,&junk,&now); } else #endif { SYSTEMTIME systime; GetSystemTime(&systime); SystemTimeToFileTime(&systime,&now); } if (stop==TM_START) { tmstart.u.LowPart = now.dwLowDateTime; tmstart.u.HighPart = now.dwHighDateTime; } else { ULARGE_INTEGER tmstop; tmstop.u.LowPart = now.dwLowDateTime; tmstop.u.HighPart = now.dwHighDateTime; ret = (tmstop.QuadPart - tmstart.QuadPart)*1e-7; } return (ret); } #elif defined(_SC_CLK_TCK) /* by means of unistd.h */ #include <sys/times.h> double app_tminterval(int stop,int usertime) { double ret = 0; struct tms rus; clock_t now = times(&rus); static clock_t tmstart; if (usertime) now = rus.tms_utime; if (stop==TMSTART) tmstart = now; else ret = (now - tmstart)/(double)sysconf(_SC_CLK_TCK); return (ret); } #else #include <sys/time.h> #include <sys/resource.h> double app_tminterval(int stop,int usertime) { double ret = 0; struct rusage rus; struct timeval now; static struct timeval tmstart; if (usertime) getrusage(RUSAGE_SELF,&rus), now = rus.ru_time; else gettimeofday(&now,NULL); if (stop==TMSTART) tmstart = now; else ret = ( (now.tv_sec+now.tv_usec*1e-6) - (tmstart.tv_sec+tmstart.tv_usec*1e-6) ); return ret; } #endif /* app_isdir section */ #ifdef _WIN32 int app_isdir(const char *name) { HANDLE hList; Loading Loading @@ -2411,6 +2505,7 @@ int app_isdir(const char *name) } #endif /* raw_read|write section */ #if defined(_WIN32) && defined(STD_INPUT_HANDLE) int raw_read_stdin(void *buf,int siz) { Loading @@ -2436,4 +2531,3 @@ int raw_write_stdout(void *buf,int siz) int raw_write_stdout(const void *buf,int siz) { return write(fileno(stdout),buf,siz); } #endif
apps/apps.h +4 −0 Original line number Diff line number Diff line Loading @@ -314,4 +314,8 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx); int app_isdir(const char *); int raw_read_stdin(void *,int); int raw_write_stdout(const void *,int); #define TM_START 0 #define TM_STOP 1 double app_tminterval (int stop,int usertime); #endif
apps/s_time.c +1 −104 Original line number Diff line number Diff line Loading @@ -85,54 +85,6 @@ #include OPENSSL_UNISTD #endif #if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) #define TIMES #endif #ifndef _IRIX #include <time.h> #endif #ifdef TIMES #include <sys/types.h> #include <sys/times.h> #endif /* Depending on the VMS version, the tms structure is perhaps defined. The __TMS macro will show if it was. If it wasn't defined, we should undefine TIMES, since that tells the rest of the program how things should be handled. -- Richard Levitte */ #if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) #undef TIMES #endif #if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) #include <sys/timeb.h> #endif #if defined(sun) || defined(__ultrix) #define _POSIX_SOURCE #include <limits.h> #include <sys/param.h> #endif /* The following if from times(3) man page. It may need to be changed */ #ifndef HZ # ifdef _SC_CLK_TCK # define HZ ((double)sysconf(_SC_CLK_TCK)) # else # ifndef CLK_TCK # ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ # define HZ 100.0 # else /* _BSD_CLK_TCK_ */ # define HZ ((double)_BSD_CLK_TCK_) # endif # else /* CLK_TCK */ # define HZ ((double)CLK_TCK) # endif # endif #endif #undef PROG #define PROG s_time_main Loading Loading @@ -372,62 +324,7 @@ bad: static double tm_Time_F(int s) { static double ret; #ifdef TIMES static struct tms tstart,tend; if(s == START) { times(&tstart); return(0); } else { times(&tend); ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ; return((ret == 0.0)?1e-6:ret); } #elif defined(OPENSSL_SYS_NETWARE) static clock_t tstart,tend; if (s == START) { tstart=clock(); return(0); } else { tend=clock(); ret=(double)((double)(tend)-(double)(tstart)); return((ret < 0.001)?0.001:ret); } #elif defined(OPENSSL_SYS_VXWORKS) { static unsigned long tick_start, tick_end; if( s == START ) { tick_start = tickGet(); return 0; } else { tick_end = tickGet(); ret = (double)(tick_end - tick_start) / (double)sysClkRateGet(); return((ret == 0.0)?1e-6:ret); } } #else /* !times() */ static struct timeb tstart,tend; long i; if(s == START) { ftime(&tstart); return(0); } else { ftime(&tend); i=(long)tend.millitm-(long)tstart.millitm; ret=((double)(tend.time-tstart.time))+((double)i)/1000.0; return((ret == 0.0)?1e-6:ret); } #endif return app_tminterval(s,1); } /*********************************************************************** Loading
apps/speed.c +32 −227 Original line number Diff line number Diff line Loading @@ -108,53 +108,8 @@ #include <signal.h> #endif #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX) # define USE_TOD #elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) # define TIMES #endif #if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) /* FIXME */ # define TIMEB #endif #if defined(OPENSSL_SYS_NETWARE) #undef TIMES #undef TIMEB #include <time.h> #endif #ifndef _IRIX # include <time.h> #endif #ifdef TIMES # include <sys/types.h> # include <sys/times.h> #endif #ifdef USE_TOD # include <sys/time.h> # include <sys/resource.h> #endif /* Depending on the VMS version, the tms structure is perhaps defined. The __TMS macro will show if it was. If it wasn't defined, we should undefine TIMES, since that tells the rest of the program how things should be handled. -- Richard Levitte */ #if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) #undef TIMES #endif #ifdef TIMEB #include <sys/timeb.h> #endif #if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE) #error "It seems neither struct tms nor struct timeb is supported in this platform!" #endif #if defined(sun) || defined(__ultrix) #define _POSIX_SOURCE #include <limits.h> #include <sys/param.h> #ifdef _WIN32 #include <windows.h> #endif #include <openssl/bn.h> Loading Loading @@ -220,34 +175,6 @@ #include <openssl/ecdh.h> #endif /* * The following "HZ" timing stuff should be sync'd up with the code in * crypto/tmdiff.[ch]. That appears to try to do the same job, though I think * this code is more up to date than libcrypto's so there may be features to * migrate over first. This is used in two places further down AFAICS. * The point is that nothing in openssl actually *uses* that tmdiff stuff, so * either speed.c should be using it or it should go because it's obviously not * useful enough. Anyone want to do a janitorial job on this? */ /* The following if from times(3) man page. It may need to be changed */ #ifndef HZ # if defined(_SC_CLK_TCK) \ && (!defined(OPENSSL_SYS_VMS) || __CTRL_VER >= 70000000) # define HZ sysconf(_SC_CLK_TCK) # else # ifndef CLK_TCK # ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ # define HZ 100.0 # else /* _BSD_CLK_TCK_ */ # define HZ ((double)_BSD_CLK_TCK_) # endif # else /* CLK_TCK */ # define HZ ((double)CLK_TCK) # endif # endif #endif #if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE) # define HAVE_FORK 1 #endif Loading Loading @@ -319,141 +246,46 @@ static SIGRETTYPE sig_done(int sig) #define START 0 #define STOP 1 #if defined(OPENSSL_SYS_NETWARE) #if defined(_WIN32) /* for NetWare the best we can do is use clock() which returns the * time, in hundredths of a second, since the NLM began executing */ static double Time_F(int s) { double ret; #define SIGALRM static unsigned int lapse,schlock; static void alarm(unsigned int secs) { lapse = secs*1000; } static clock_t tstart,tend; if (s == START) static DWORD WINAPI sleepy(VOID *arg) { tstart=clock(); return(0); } else { tend=clock(); ret=(double)((double)(tend)-(double)(tstart)); return((ret < 0.001)?0.001:ret); } schlock = 1; Sleep(lapse); run = 0; return 0; } #else static double Time_F(int s) { double ret; #ifdef USE_TOD if(usertime) { static struct rusage tstart,tend; getrusage_used = 1; if (s == START) { getrusage(RUSAGE_SELF,&tstart); return(0); } else { long i; getrusage(RUSAGE_SELF,&tend); i=(long)tend.ru_utime.tv_usec-(long)tstart.ru_utime.tv_usec; ret=((double)(tend.ru_utime.tv_sec-tstart.ru_utime.tv_sec)) +((double)i)/1000000.0; return((ret < 0.001)?0.001:ret); } } else { static struct timeval tstart,tend; long i; gettimeofday_used = 1; if (s == START) { gettimeofday(&tstart,NULL); return(0); } else HANDLE thr; schlock = 0; thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL); if (thr==NULL) { gettimeofday(&tend,NULL); i=(long)tend.tv_usec-(long)tstart.tv_usec; ret=((double)(tend.tv_sec-tstart.tv_sec))+((double)i)/1000000.0; return((ret < 0.001)?0.001:ret); DWORD ret=GetLastError(); BIO_printf(bio_err,"unable to CreateThread (%d)",ret); ExitProcess(ret); } CloseHandle(thr); /* detach the thread */ while (!schlock) Sleep(0); /* scheduler spinlock */ } #else /* ndef USE_TOD */ # ifdef TIMES if (usertime) { static struct tms tstart,tend; times_used = 1; if (s == START) { times(&tstart); return(0); } else { times(&tend); ret = HZ; ret=(double)(tend.tms_utime-tstart.tms_utime) / ret; return((ret < 1e-3)?1e-3:ret); } } # endif /* times() */ # if defined(TIMES) && defined(TIMEB) else # endif # ifdef OPENSSL_SYS_VXWORKS { static unsigned long tick_start, tick_end; if( s == START ) { tick_start = tickGet(); return 0; return app_tminterval(s,usertime); } else { tick_end = tickGet(); ret = (double)(tick_end - tick_start) / (double)sysClkRateGet(); return((ret < 0.001)?0.001:ret); } } # elif defined(TIMEB) { static struct timeb tstart,tend; long i; #else ftime_used = 1; if (s == START) { ftime(&tstart); return(0); } else static double Time_F(int s) { ftime(&tend); i=(long)tend.millitm-(long)tstart.millitm; ret=((double)(tend.time-tstart.time))+((double)i)/1000.0; return((ret < 0.001)?0.001:ret); return app_tminterval(s,usertime); } } # endif #endif } #endif /* if defined(OPENSSL_SYS_NETWARE) */ #ifndef OPENSSL_NO_ECDH Loading Loading @@ -1508,7 +1340,9 @@ int MAIN(int argc, char **argv) #else #define COND(c) (run) #define COUNT(d) (count) #ifndef _WIN32 signal(SIGALRM,sig_done); #endif #endif /* SIGALRM */ #ifndef OPENSSL_NO_MD2 Loading Loading @@ -2295,35 +2129,6 @@ show_res: printf("%s ",BF_options()); #endif fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS)); printf("available timing options: "); #ifdef TIMES printf("TIMES "); #endif #ifdef TIMEB printf("TIMEB "); #endif #ifdef USE_TOD printf("USE_TOD "); #endif #ifdef HZ #define as_string(s) (#s) { double dbl = HZ; printf("HZ=%g", dbl); } # ifdef _SC_CLK_TCK printf(" [sysconf value]"); # endif #endif printf("\n"); printf("timing function used: %s%s%s%s%s%s%s\n", (ftime_used ? "ftime" : ""), (ftime_used + times_used > 1 ? "," : ""), (times_used ? "times" : ""), (ftime_used + times_used + gettimeofday_used > 1 ? "," : ""), (gettimeofday_used ? "gettimeofday" : ""), (ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""), (getrusage_used ? "getrusage" : "")); } if (pr_header) Loading