diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-08-27 20:42:31 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-08-27 20:42:31 +0200 |
commit | 0a5f81a44230cbd562b6d71a0a5be018e24a5ba6 (patch) | |
tree | 883f1cb3f5cc91053fb377c2ac28b2db1bd07ba1 /sys/src/9/port/devcons.c | |
parent | 71ac88392f2033256b29f22bd8afdd7374100e5a (diff) |
kernel: switch to fast portable chacha based seed-once random number generator
Diffstat (limited to 'sys/src/9/port/devcons.c')
-rw-r--r-- | sys/src/9/port/devcons.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/sys/src/9/port/devcons.c b/sys/src/9/port/devcons.c index b09df91f2..7f287610f 100644 --- a/sys/src/9/port/devcons.c +++ b/sys/src/9/port/devcons.c @@ -4,8 +4,8 @@ #include "dat.h" #include "fns.h" #include "../port/error.h" -#include "pool.h" +#include <pool.h> #include <authsrv.h> void (*consdebug)(void) = nil; @@ -21,7 +21,6 @@ int panicking; char *sysname; vlong fasthz; -static void seedrand(void); static int readtime(ulong, char*, int); static int readbintime(char*, int); static int writetime(char*, int); @@ -616,7 +615,8 @@ consread(Chan *c, void *buf, long n, vlong off) "%lud/%lud user\n" "%lud/%lud swap\n" "%llud/%llud/%llud kernel malloc\n" - "%llud/%llud/%llud kernel draw\n", + "%llud/%llud/%llud kernel draw\n" + "%llud/%llud/%llud kernel secret\n", (uvlong)conf.npage*BY2PG, (uvlong)BY2PG, conf.npage-conf.upages, @@ -627,7 +627,10 @@ consread(Chan *c, void *buf, long n, vlong off) (uvlong)mainmem->maxsize, (uvlong)imagmem->curalloc, (uvlong)imagmem->cursize, - (uvlong)imagmem->maxsize); + (uvlong)imagmem->maxsize, + (uvlong)secrmem->curalloc, + (uvlong)secrmem->cursize, + (uvlong)secrmem->maxsize); return readstr((ulong)offset, buf, n, tmp); @@ -845,29 +848,20 @@ Dev consdevtab = { static ulong randn; -static void -seedrand(void) -{ - if(!waserror()){ - randomread((void*)&randn, sizeof(randn)); - poperror(); - } -} - int -nrand(int n) +rand(void) { if(randn == 0) - seedrand(); + randomread((void*)&randn, sizeof(randn)); randn = randn*1103515245 + 12345 + MACHP(0)->ticks; - return (randn>>16) % n; + return randn; } int -rand(void) +nrand(int n) { - nrand(1); - return randn; + rand(); + return (randn>>16) % n; } static uvlong uvorder = 0x0001020304050607ULL; |