summaryrefslogtreecommitdiffstats
path: root/sys/dev/random
diff options
context:
space:
mode:
authordavide <davide@FreeBSD.org>2013-03-04 16:16:23 +0000
committerdavide <davide@FreeBSD.org>2013-03-04 16:16:23 +0000
commit9157a1f8c61715b7054d9997e6deebdb0ae97836 (patch)
tree26e179c27c41e00bc86ca9863c2ab3fe21222d7f /sys/dev/random
parent40e58fe5480bccc549157ad1254b427e73a20b52 (diff)
downloadFreeBSD-src-9157a1f8c61715b7054d9997e6deebdb0ae97836.zip
FreeBSD-src-9157a1f8c61715b7054d9997e6deebdb0ae97836.tar.gz
MFcalloutng (r236314 by mav):
Specify that wakeup rate of 7.5-10Hz is enough for yarrow harvesting thread. Sponsored by: Google Summer of Code 2012, iXsystems inc. Tested by: flo, marius, ian, markj, Fabian Keil
Diffstat (limited to 'sys/dev/random')
-rw-r--r--sys/dev/random/randomdev_soft.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/random/randomdev_soft.c b/sys/dev/random/randomdev_soft.c
index 420a82a..004066eb 100644
--- a/sys/dev/random/randomdev_soft.c
+++ b/sys/dev/random/randomdev_soft.c
@@ -242,10 +242,10 @@ random_kthread(void *arg __unused)
local_count = 0;
/* Process until told to stop */
+ mtx_lock_spin(&harvest_mtx);
for (; random_kthread_control >= 0;) {
/* Cycle through all the entropy sources */
- mtx_lock_spin(&harvest_mtx);
for (source = RANDOM_START; source < ENTROPYSOURCE; source++) {
/*
* Drain entropy source records into a thread-local
@@ -270,7 +270,6 @@ random_kthread(void *arg __unused)
emptyfifo.count += local_count;
local_count = 0;
}
- mtx_unlock_spin(&harvest_mtx);
KASSERT(local_count == 0, ("random_kthread: local_count %d",
local_count));
@@ -283,9 +282,11 @@ random_kthread(void *arg __unused)
random_kthread_control = 0;
/* Work done, so don't belabour the issue */
- pause("-", hz / 10);
+ msleep_spin_sbt(&random_kthread_control, &harvest_mtx,
+ "-", SBT_1S / 10, 0, C_PREL(1));
}
+ mtx_unlock_spin(&harvest_mtx);
random_set_wakeup_exit(&random_kthread_control);
/* NOTREACHED */
OpenPOWER on IntegriCloud