Code

Merge branch 'collectd-5.4' into collectd-5.5
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Sat, 19 Mar 2016 15:47:33 +0000 (16:47 +0100)
committerRuben Kerkhof <ruben@rubenkerkhof.com>
Sat, 19 Mar 2016 15:47:33 +0000 (16:47 +0100)
1  2 
src/daemon/utils_random.c
src/utils_latency.c

index 548d1d81c81aefadda6f9ee790e05650ddbd0104,0000000000000000000000000000000000000000..fee08717a7d464c809be8f23685117654d6bdab0
mode 100644,000000..100644
--- /dev/null
@@@ -1,77 -1,0 +1,77 @@@
- #include <pthread.h>
 +/**
 + * collectd - src/utils_random.c
 + * Copyright (C) 2013       Florian Forster
 + *
 + * Permission is hereby granted, free of charge, to any person obtaining a
 + * copy of this software and associated documentation files (the "Software"),
 + * to deal in the Software without restriction, including without limitation
 + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 + * and/or sell copies of the Software, and to permit persons to whom the
 + * Software is furnished to do so, subject to the following conditions:
 + *
 + * The above copyright notice and this permission notice shall be included in
 + * all copies or substantial portions of the Software.
 + *
 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 + * DEALINGS IN THE SOFTWARE.
 + *
 + * Authors:
 + *   Florian Forster <octo at collectd.org>
 + **/
 +
 +#include "collectd.h"
 +#include "utils_time.h"
 +#include "utils_random.h"
 +
++#include <pthread.h>
++
 +
 +static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
 +static _Bool have_seed = 0;
 +static unsigned short seed[3];
 +
 +static void cdrand_seed (void)
 +{
 +  cdtime_t t;
 +
 +  if (have_seed)
 +    return;
 +
 +  t = cdtime();
 +
 +  seed[0] = (unsigned short) t;
 +  seed[1] = (unsigned short) (t >> 16);
 +  seed[2] = (unsigned short) (t >> 32);
 +
 +  have_seed = 1;
 +}
 +
 +double cdrand_d (void)
 +{
 +  double r;
 +
 +  pthread_mutex_lock (&lock);
 +  cdrand_seed ();
 +  r = erand48 (seed);
 +  pthread_mutex_unlock (&lock);
 +
 +  return (r);
 +}
 +
 +long cdrand_range (long min, long max)
 +{
 +  long range;
 +  long r;
 +
 +  range = 1 + max - min;
 +
 +  r = (long) (0.5 + (cdrand_d () * range));
 +  r += min;
 +
 +  return (r);
 +}
Simple merge