diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 1997-06-24 02:45:03 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 1997-06-24 02:45:03 +0000 |
commit | eff6e3e80e35d8f831768029b7ab27841f587ad7 (patch) | |
tree | 71cc5c2a53148e824f6706012057be8f766526e1 /sys | |
parent | 3b0b93f0c3f7c06b4273ee7798516deda393b195 (diff) |
more accounting!
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/rnd.c | 30 | ||||
-rw-r--r-- | sys/dev/rndioctl.h | 2 | ||||
-rw-r--r-- | sys/dev/rndvar.h | 5 |
3 files changed, 20 insertions, 17 deletions
diff --git a/sys/dev/rnd.c b/sys/dev/rnd.c index c95c328e928..00d2ae7a34f 100644 --- a/sys/dev/rnd.c +++ b/sys/dev/rnd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rnd.c,v 1.29 1997/06/22 05:05:00 flipk Exp $ */ +/* $OpenBSD: rnd.c,v 1.30 1997/06/24 02:45:00 mickey Exp $ */ /* * random.c -- A strong random number generator @@ -325,9 +325,7 @@ static struct timer_rand_state disk_timer_state; static struct timer_rand_state net_timer_state; static struct timer_rand_state tty_timer_state; static struct rand_event event_space[QEVLEN]; -static int rnd_sleep = 0; static int rnd_attached = 0; -static int rnd_enqueued = 0; static struct rand_event *event_q = NULL; static struct rand_event *event_free; @@ -566,7 +564,7 @@ enqueue_randomness(state, val) for (nbits = 0; delta; nbits++) delta >>= 1; - if (rnd_enqueued > QEVSLOW && nbits < QEVSBITS) { + if (rndstats.rnd_queued > QEVSLOW && nbits < QEVSBITS) { rndstats.rnd_drople++; return; } @@ -592,10 +590,10 @@ enqueue_randomness(state, val) rep = rep->re_next; splx(s); rndstats.rnd_timer++; - rnd_enqueued++; + rndstats.rnd_queued++; if (rep == NULL) - timeout(dequeue_randomness, NULL, 1); + timeout(dequeue_randomness, (void *)0xdeadd00d, 1); } @@ -624,7 +622,6 @@ dequeue_randomness(v) rep->re_next = event_free; event_free = rep; splx(s); - rnd_enqueued--; /* Prevent overflow */ if ((random_state.entropy_count + nbits) > POOLBITS && @@ -639,14 +636,17 @@ dequeue_randomness(v) if (random_state.entropy_count > POOLBITS) random_state.entropy_count = POOLBITS; - if (random_state.entropy_count > 8 && rnd_sleep != 0) { - rnd_sleep--; + rndstats.rnd_queued--; + if (random_state.entropy_count > 8 && + rndstats.rnd_asleep != 0) { #ifdef DEBUG if (rnd_debug & RD_WAIT) printf("rnd: wakeup[%d]{%u}\n", - rnd_sleep, random_state.entropy_count); + rndstats.rnd_asleep, + random_state.entropy_count); #endif - wakeup(&rnd_sleep); + rndstats.rnd_asleep--; + wakeup(&rndstats.rnd_asleep); } } while(1); @@ -825,12 +825,12 @@ randomread(dev, uio, ioflag) #ifdef DEBUG if (rnd_debug & RD_WAIT) printf("rnd: sleep[%d]\n", - rnd_sleep); + rndstats.rnd_asleep); #endif - rnd_sleep++; + rndstats.rnd_asleep++; rndstats.rnd_waits++; - ret = tsleep(&rnd_sleep, PWAIT | PCATCH, - "rndrd", 0); + ret = tsleep(&rndstats.rnd_asleep, + PWAIT | PCATCH, "rndrd", 0); #ifdef DEBUG if (rnd_debug & RD_WAIT) printf("rnd: awakened(%d)\n", ret); diff --git a/sys/dev/rndioctl.h b/sys/dev/rndioctl.h index b5f161932df..97f358452c4 100644 --- a/sys/dev/rndioctl.h +++ b/sys/dev/rndioctl.h @@ -1,4 +1,4 @@ -/* $OpenBSD: rndioctl.h,v 1.5 1997/06/22 04:58:06 flipk Exp $ */ +/* $OpenBSD: rndioctl.h,v 1.6 1997/06/24 02:45:01 mickey Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff. diff --git a/sys/dev/rndvar.h b/sys/dev/rndvar.h index 28edbc99322..8aee82949ab 100644 --- a/sys/dev/rndvar.h +++ b/sys/dev/rndvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: rndvar.h,v 1.9 1997/06/22 04:58:06 flipk Exp $ */ +/* $OpenBSD: rndvar.h,v 1.10 1997/06/24 02:45:01 mickey Exp $ */ /* * Copyright (c) 1996 Michael Shalayeff. @@ -63,6 +63,9 @@ struct rndstats { u_long rnd_deqs; /* dequeue calls */ u_long rnd_drops; /* queue-full drops */ u_long rnd_drople;/* queue low watermark low entropy drops */ + + u_int rnd_asleep; /* sleeping for the data */ + u_int rnd_queued; /* queued for processing */ }; #ifdef _KERNEL |