summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devcons.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2016-08-27 20:42:31 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2016-08-27 20:42:31 +0200
commit0a5f81a44230cbd562b6d71a0a5be018e24a5ba6 (patch)
tree883f1cb3f5cc91053fb377c2ac28b2db1bd07ba1 /sys/src/9/port/devcons.c
parent71ac88392f2033256b29f22bd8afdd7374100e5a (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.c32
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;