From efbbe8fa7938f8ac071095b5b46f621885b447e4 Mon Sep 17 00:00:00 2001 From: Paul Saab Date: Tue, 20 Dec 2005 21:41:52 +0000 Subject: Remove GIANT from device random. Submitted by: ups --- sys/dev/random/randomdev.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'sys/dev/random/randomdev.c') diff --git a/sys/dev/random/randomdev.c b/sys/dev/random/randomdev.c index e18be5a0b2a60..4d2b1bbffe6d0 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); } -- cgit v1.3