Add prng(9) as a replacement for random(9) in the kernel. There are two major differences from random(9) and random(3): - General prng(9) APIs (prng32(9), etc) do not guarantee an implementation or particular sequence; they should not be used for repeatable simulations. - However, specific named API families are also exposed (for now: PCG), and those are expected to be repeatable (when so-guaranteed by the named algorithm). Some minor differences from random(3) and earlier random(9): - PRNG state for the general prng(9) APIs is per-CPU; this eliminates contention on PRNG state in SMP workloads. Each PCPU generator in an SMP system produces a unique sequence. - Better statistical properties than the Park-Miller ("minstd") PRNG (longer period, uniform distribution in all bits, passes BigCrush/PractRand analysis). - Faster than Park-Miller ("minstd") PRNG -- no division is required to step PCG-family PRNGs. For now, random(9) becomes a thin shim around prng32(). Eventually I would like to mechanically switch consumers over to the explicit API. Reviewed by: kib, markj (previous version both) Discussed with: markm Differential Revision: https://reviews.freebsd.org/D25916 |
||
---|---|---|
.. | ||
alpine-hal | ||
ck | ||
cloudabi | ||
dev | ||
edk2 | ||
ena-com | ||
ipfilter/netinet | ||
libb2 | ||
libfdt | ||
libnv | ||
libsodium | ||
ncsw | ||
ngatm | ||
octeon-sdk | ||
pcg-c/include | ||
rdma/krping | ||
v4l | ||
vchiq/interface | ||
x86emu | ||
xz-embedded | ||
zlib | ||
zstd |