This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 4/6] Do not use HP_TIMING_NOW for random bits


Hi Adhemerval,

This looks good. One comment though:

+/* Provides fast pseudo-random bits through clock_gettime.  It has unspecified
+   starting time, nano-second accuracy, its randomness is significantly better
+   than gettimeofday, and for mostly architectures it is implemented through
+   vDSO instead of a syscall.  */
+static inline uint64_t
+random_bits (void)
+{
+  struct timespec tv;
+  __clock_gettime (CLOCK_MONOTONIC, &tv);
+  return tv.tv_nsec + UINT64_C(1000000000) * tv.tv_sec;
+}

It might be better to just return 32 bits given the top bits are going to be mostly
identical. Also it makes sense to shuffle the bits slightly given most code relies
on the low bits being the most random, but if the increment is a multiple of a ns
the low bits may never change. Something like:

tmp = tv.tv_nsec ^ tv.tv_sec;
tmp ^= (tmp << 24) | (tmp >> 8);

Wilco

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]