aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/random/randomdev.c
diff options
context:
space:
mode:
authorPaul Saab <ps@FreeBSD.org>2005-12-20 21:41:52 +0000
committerPaul Saab <ps@FreeBSD.org>2005-12-20 21:41:52 +0000
commitefbbe8fa7938f8ac071095b5b46f621885b447e4 (patch)
treeb796b749704c3e811aff24db132665fd3285a303 /sys/dev/random/randomdev.c
parent13ae4dad3ad0ec466079fce7e03e05c22581b571 (diff)
Notes
Diffstat (limited to 'sys/dev/random/randomdev.c')
-rw-r--r--sys/dev/random/randomdev.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/sys/dev/random/randomdev.c b/sys/dev/random/randomdev.c
index e18be5a0b2a6..4d2b1bbffe6d 100644
--- a/sys/dev/random/randomdev.c
+++ b/sys/dev/random/randomdev.c
@@ -61,7 +61,6 @@ static d_poll_t random_poll;
static struct cdevsw random_cdevsw = {
.d_version = D_VERSION,
- .d_flags = D_NEEDGIANT,
.d_close = random_close,
.d_read = random_read,
.d_write = random_write,
@@ -103,15 +102,8 @@ random_read(struct cdev *dev __unused, struct uio *uio, int flag)
void *random_buf;
/* Blocking logic */
- while (!random_systat.seeded && !error) {
- if (flag & O_NONBLOCK)
- error = EWOULDBLOCK;
- else {
- printf("Entropy device is blocking.\n");
- error = tsleep(&random_systat,
- PUSER | PCATCH, "block", 0);
- }
- }
+ if (!random_systat.seeded)
+ error = (*random_systat.block)(flag);
/* The actual read */
if (!error) {
@@ -181,7 +173,7 @@ random_poll(struct cdev *dev __unused, int events, struct thread *td)
if (random_systat.seeded)
revents = events & (POLLIN | POLLRDNORM);
else
- selrecord(td, &random_systat.rsel);
+ revents = (*random_systat.poll) (events,td);
}
return (revents);
}