From 70221324f0971ccf4ac4017da5e34297b1e2af65 Mon Sep 17 00:00:00 2001 Message-Id: <70221324f0971ccf4ac4017da5e34297b1e2af65.1716395927.git.mdw@distorted.org.uk> From: Mark Wooding Date: Thu, 26 May 2016 09:26:09 +0100 Subject: [PATCH] rand/noise.c: Make the high-res timer function be a bit more abstract. Organization: Straylight/Edgeware From: Mark Wooding You can tell that there's more coming from the indentation. But there shouldn't be any real change at this stage. --- rand/noise.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/rand/noise.c b/rand/noise.c index 2c30c13c..f01af651 100644 --- a/rand/noise.c +++ b/rand/noise.c @@ -64,7 +64,13 @@ /*----- Magical numbers ---------------------------------------------------*/ #define NOISE_KIDLIFE 100000 /* @noise_filter@ child lifetime */ -#define MILLION 1000000 /* One million */ + +# define TIMESTRUCT timeval +# define tv_SEC tv_sec +# define tv_FRAC tv_usec +# define TIMERES 1000000 +# define GETTIME(tv) (gettimeofday((tv), 0)) +# define TOTIMEVAL(tv, xx) (*(tv) = *(xx)) /*----- Noise source definition -------------------------------------------*/ @@ -106,20 +112,20 @@ static int bitcount(unsigned long x) /* --- @timer@ --- * * * Arguments: @rand_pool *r@ = pointer to randomness pool - * @struct timeval *tv@ = pointer to time block + * @const struct TIMESTRUCT *tv@ = pointer to time block * * Returns: Nonzero if some randomness was contributed. * * Use: Low-level timer contributor. */ -static int timer(rand_pool *r, struct timeval *tv) +static int timer(rand_pool *r, const struct TIMESTRUCT *tv) { unsigned long x, d, dd; int de, dde; int ret; - x = tv->tv_usec + MILLION * tv->tv_sec; + x = tv->tv_FRAC + TIMERES*tv->tv_SEC; d = x ^ noise_last; dd = d ^ noise_diff; noise_last = x; @@ -146,9 +152,8 @@ static int timer(rand_pool *r, struct timeval *tv) int noise_timer(rand_pool *r) { - struct timeval tv; - gettimeofday(&tv, 0); - return (timer(r, &tv)); + struct TIMESTRUCT tv; + GETTIME(&tv); return (timer(r, &tv)); } /* --- @noise_devrandom@ --- * @@ -319,6 +324,7 @@ int noise_filter(rand_pool *r, int good, const char *c) pid_t kid; int fd[2]; struct timeval dead; + struct TIMESTRUCT now; int ret = 0; struct noisekid nk = { 0 }; sel_state sel; @@ -331,8 +337,8 @@ int noise_filter(rand_pool *r, int good, const char *c) /* --- Remember when this business started --- */ - gettimeofday(&dead, 0); - timer(r, &dead); + GETTIME(&now); timer(r, &now); + TOTIMEVAL(&dead, &now); /* --- Create a pipe --- */ -- [mdw]