apps/speed.c: limit loop counters to 2^31 in order to avoid overflows

in performance calculations. For the moment there is only one code
fast enough to suffer from this: Intel AES-NI engine.
PR: 2096
This commit is contained in:
Andy Polyakov 2010-01-17 17:31:38 +00:00
parent 78a533cb93
commit d582c98d8f
1 changed files with 15 additions and 5 deletions

View File

@ -277,9 +277,11 @@ static DWORD WINAPI sleepy(VOID *arg)
static double Time_F(int s)
{
double ret;
static HANDLE thr;
if (s == START)
{
HANDLE thr;
schlock = 0;
thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL);
if (thr==NULL)
@ -288,17 +290,25 @@ static double Time_F(int s)
BIO_printf(bio_err,"unable to CreateThread (%d)",ret);
ExitProcess(ret);
}
CloseHandle(thr); /* detach the thread */
while (!schlock) Sleep(0); /* scheduler spinlock */
ret = app_tminterval(s,usertime);
}
else
{
ret = app_tminterval(s,usertime);
if (run) TerminateThread(thr,0);
CloseHandle(thr);
}
return app_tminterval(s,usertime);
return ret;
}
#else
static double Time_F(int s)
{
return app_tminterval(s,usertime);
double ret = app_tminterval(s,usertime);
if (s == STOP) alarm(0);
return ret;
}
#endif
@ -1454,7 +1464,7 @@ int MAIN(int argc, char **argv)
# error "You cannot disable DES on systems without SIGALRM."
#endif /* OPENSSL_NO_DES */
#else
#define COND(c) (run)
#define COND(c) (run && count<0x7fffffff)
#define COUNT(d) (count)
#ifndef _WIN32
signal(SIGALRM,sig_done);