diff options
| author | Paul Saab <ps@FreeBSD.org> | 2005-12-20 21:41:52 +0000 |
|---|---|---|
| committer | Paul Saab <ps@FreeBSD.org> | 2005-12-20 21:41:52 +0000 |
| commit | efbbe8fa7938f8ac071095b5b46f621885b447e4 (patch) | |
| tree | b796b749704c3e811aff24db132665fd3285a303 /sys/dev/random/randomdev.c | |
| parent | 13ae4dad3ad0ec466079fce7e03e05c22581b571 (diff) | |
Notes
Diffstat (limited to 'sys/dev/random/randomdev.c')
| -rw-r--r-- | sys/dev/random/randomdev.c | 14 |
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); } |
