On Sun, Nov 26 2017, Jeremie Courreges-Anglas <[email protected]> wrote: > On Sat, Nov 25 2017, Brent Cook <[email protected]> wrote: >> Thanks guys. This will make enabling this on the odder platforms in >> portable easier. > > NB: if we want to able to mix app_tminterval() for real and user time, the > static storage used for "start" should be different. This is not the > case for the Windows implementation, which *seems* to support only user > time: > > > https://github.com/libressl-portable/portable/blob/master/apps/openssl/apps_win.c > > Another approach, which would require more changes, would be to just > provide two seperate functions, possibly named app_timer_real() and > app_timer_user(). The Windows version of app_timer_real() could start > as a simple copy of app_timer_user(), marked with XXX...
So here's a diff similar to what Scott proposed in his first diff. The apps_win.c diff for portable would look like this (untested): https://pbot.rmdir.de/sy3XxnKuTQHgotB35BJ6vQ I resisted the temptation to make use of TM_START/TM_STOP instead of local defines, this could be another TODO entry. I don't like the TM_START/TM_STOP names btw, TM_STOP doesn't actually stop the timer, it's just a "get" operation. Do you folks agree with this approach? Index: apps.h =================================================================== RCS file: /d/cvs/src/usr.bin/openssl/apps.h,v retrieving revision 1.19 diff -u -p -r1.19 apps.h --- apps.h 30 Aug 2016 14:34:59 -0000 1.19 +++ apps.h 26 Nov 2017 17:46:01 -0000 @@ -279,7 +279,8 @@ int app_isdir(const char *); #define TM_START 0 #define TM_STOP 1 -double app_tminterval (int stop, int usertime); +double app_timer_realtime(int stop); +double app_timer_usertime(int stop); #define OPENSSL_NO_SSL_INTERN Index: apps_posix.c =================================================================== RCS file: /d/cvs/src/usr.bin/openssl/apps_posix.c,v retrieving revision 1.3 diff -u -p -r1.3 apps_posix.c --- apps_posix.c 24 Nov 2017 13:48:12 -0000 1.3 +++ apps_posix.c 26 Nov 2017 17:43:18 -0000 @@ -123,8 +123,8 @@ #include "apps.h" -static double -real_interval(int stop) +double +app_timer_realtime(int stop) { static struct timespec start; struct timespec elapsed, now; @@ -138,8 +138,8 @@ real_interval(int stop) return 0.0; } -static double -user_interval(int stop) +double +app_timer_usertime(int stop) { static struct timeval start; struct timeval elapsed; @@ -152,12 +152,6 @@ user_interval(int stop) } start = now.ru_utime; return 0.0; -} - -double -app_tminterval(int stop, int usertime) -{ - return (usertime) ? user_interval(stop) : real_interval(stop); } int Index: s_time.c =================================================================== RCS file: /d/cvs/src/usr.bin/openssl/s_time.c,v retrieving revision 1.18 diff -u -p -r1.18 s_time.c --- s_time.c 2 Nov 2017 00:31:49 -0000 1.18 +++ s_time.c 26 Nov 2017 17:40:54 -0000 @@ -233,9 +233,9 @@ s_time_usage(void) #define STOP 1 static double -tm_Time_F(int s) +tm_Time_F(int op) { - return app_tminterval(s, 1); + return app_timer_usertime(op); } /*********************************************************************** Index: speed.c =================================================================== RCS file: /d/cvs/src/usr.bin/openssl/speed.c,v retrieving revision 1.20 diff -u -p -r1.20 speed.c --- speed.c 7 Oct 2017 06:16:54 -0000 1.20 +++ speed.c 26 Nov 2017 17:45:29 -0000 @@ -202,7 +202,10 @@ sig_done(int sig) static double Time_F(int s) { - return app_tminterval(s, usertime); + if (usertime) + return app_timer_usertime(s); + else + return app_timer_realtime(s); } -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
