eal: improve entropy for initial PRNG seed
authorMattias Rönnblom <mattias.ronnblom@ericsson.com>
Fri, 28 Jun 2019 09:01:22 +0000 (11:01 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 28 Jun 2019 13:23:52 +0000 (15:23 +0200)
commitfaf8fd252785ee8b181d11c3aea7e0b2b0ed3f56
tree6e6741693872f81c7d12c7258ead17fc8c305127
parent3f002f06961262667694171c20cb3443be6017c1
eal: improve entropy for initial PRNG seed

Replace the use of rte_get_timer_cycles() with getentropy() for
seeding the pseudo-random number generator. getentropy() provides a
more truly random value.

getentropy() requires glibc 2.25 and Linux kernel 3.17. In case
getentropy() is not found at compile time, or the relevant syscall
fails in runtime, the rdseed machine instruction will be used as a
fallback.

rdseed is only available on x86 (Broadwell or later). In case it is
not present, rte_get_timer_cycles() will be used as a second fallback.

On non-Meson builds, getentropy() will not be used.

Suggested-by: Bruce Richardson <bruce.richardson@intel.com>
Suggested-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
lib/librte_eal/common/rte_random.c
lib/librte_eal/meson.build