freebsd-skq/share/man
cem aac895409a Add prng(9) API
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
2020-08-13 20:48:14 +00:00
..
man1
man3 Add further clarification on si_addr and si_trapno. 2020-07-28 17:09:15 +00:00
man4 hook cp2112.4 to the build 2020-08-12 11:37:28 +00:00
man5 core(5) appeared in Version 1 AT&T UNIX 2020-08-02 16:59:14 +00:00
man6
man7 environ(7): Update the description and include some more environment variables 2020-08-05 11:41:41 +00:00
man8 Point to rc(8) for more details about the autoboot variable 2020-07-31 14:13:26 +00:00
man9 Add prng(9) API 2020-08-13 20:48:14 +00:00
Makefile