* preserve reproducibility of the number sequence (which usually does not
* matter).
**/
-static pthread_mutex_t prng_lock = PTHREAD_MUTEX_INITIALIZER;
+static struct
+{
+ pthread_mutex_t lock;
+ unsigned int seed;
+} prng = { PTHREAD_MUTEX_INITIALIZER, 0, };
void srand (unsigned int seed)
{
- pthread_mutex_lock (&prng_lock);
+ pthread_mutex_lock (&prng.lock);
LOG("Warning", "%d", seed);
- CALL(srand, seed);
- pthread_mutex_unlock (&prng_lock);
+ prng.seed = seed;
+ pthread_mutex_unlock (&prng.lock);
}
int rand (void)
{
int ret;
- pthread_mutex_lock (&prng_lock);
+ pthread_mutex_lock (&prng.lock);
LOG("Warning", "");
- ret = CALL(rand);
- pthread_mutex_unlock (&prng_lock);
+ ret = rand_r (&prng.seed);
+ pthread_mutex_unlock (&prng.lock);
return ret;
}