Jeff Dike
9a6f70bbed
random: add async notification support to /dev/random
Add async notification support to /dev/random.
A little test case is below. Without this patch, you get:
$ ./async-random
Drained the pool
Found more randomness
With it, you get:
$ ./async-random
Drained the pool
SIGIO
Found more randomness
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include <fcntl.h>
static void handler(int sig)
{
printf("SIGIO\n");
}
int main(int argc, char **argv)
{
int fd, n, err, flags;
if(signal(SIGIO, handler) < 0){
perror("setting SIGIO handler");
exit(1);
}
fd = open("/dev/random", O_RDONLY);
if(fd < 0){
perror("open");
exit(1);
}
flags = fcntl(fd, F_GETFL);
if (flags < 0){
perror("getting flags");
exit(1);
}
flags |= O_NONBLOCK;
if (fcntl(fd, F_SETFL, flags) < 0){
perror("setting flags");
exit(1);
}
while((err = read(fd, &n, sizeof(n))) > 0) ;
if(err == 0){
printf("random returned 0\n");
exit(1);
}
else if(errno != EAGAIN){
perror("read");
exit(1);
}
flags |= O_ASYNC;
if (fcntl(fd, F_SETFL, flags) < 0){
perror("setting flags");
exit(1);
}
if (fcntl(fd, F_SETOWN, getpid()) < 0) {
perror("Setting SIGIO");
exit(1);
}
printf("Drained the pool\n");
read(fd, &n, sizeof(n));
printf("Found more randomness\n");
return(0);
}
Signed-off-by: Jeff Dike <jdike@linux.intel.com>
Signed-off-by: Matt Mackall <mpm@selenic.com>
Cc: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
2008-04-29 08:06:25 -07:00 |
| .. |
|
acorn/char
|
|
|
|
acpi
|
acpi: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
amba
|
|
|
|
ata
|
typo in sata_fsl
|
2008-04-28 10:03:31 -07:00 |
|
atm
|
drivers: atm, char fix integer as NULL pointer warnings
|
2008-04-28 17:29:18 -07:00 |
|
auxdisplay
|
|
|
|
base
|
firmware loader: printk when requesting firmware
|
2008-04-29 08:06:05 -07:00 |
|
block
|
remove aoedev_isbusy()
|
2008-04-29 08:06:24 -07:00 |
|
bluetooth
|
|
|
|
cdrom
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
char
|
random: add async notification support to /dev/random
|
2008-04-29 08:06:25 -07:00 |
|
clocksource
|
|
|
|
connector
|
|
|
|
cpufreq
|
[CPUFREQ] fix show_trans_table
|
2008-04-28 15:05:44 -04:00 |
|
cpuidle
|
|
|
|
crypto
|
|
|
|
dca
|
|
|
|
dio
|
|
|
|
dma
|
|
|
|
edac
|
|
|
|
eisa
|
|
|
|
firewire
|
|
|
|
firmware
|
edd: add default mode CONFIG_EDD_OFF=n, override with edd={on,off}
|
2008-04-29 08:06:23 -07:00 |
|
gpio
|
gpiochip_reserve()
|
2008-04-28 08:58:34 -07:00 |
|
hid
|
usbhid endianness annotations and fixes
|
2008-04-28 10:03:31 -07:00 |
|
hwmon
|
|
|
|
i2c
|
|
|
|
ide
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
ieee1394
|
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
|
2008-04-25 12:24:06 -07:00 |
|
infiniband
|
IB: expand ib_umem_get() prototype
|
2008-04-29 08:06:12 -07:00 |
|
input
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
isdn
|
isdn: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
leds
|
leds: Add default-on trigger
|
2008-04-25 00:06:52 +01:00 |
|
lguest
|
|
|
|
macintosh
|
mac-hid: fix build after lockdep annotation
|
2008-04-25 18:57:09 -07:00 |
|
mca
|
proc: remove proc_root from drivers
|
2008-04-29 08:06:18 -07:00 |
|
md
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
media
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
memstick
|
|
|
|
message
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
mfd
|
mfd: use shorter set_current_state()
|
2008-04-28 08:58:32 -07:00 |
|
misc
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
mmc
|
|
|
|
mtd
|
drivers: fix integer as NULL pointer warnings
|
2008-04-28 17:31:13 -07:00 |
|
net
|
netdev: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
nubus
|
proc: convert /proc/bus/nubus to seq_file interface
|
2008-04-29 08:06:19 -07:00 |
|
of
|
|
|
|
oprofile
|
oprofile: change cpu_buffer from array to per_cpu variable
|
2008-04-28 08:58:31 -07:00 |
|
parisc
|
parisc: use non-racy method for proc entries creation
|
2008-04-29 08:06:22 -07:00 |
|
parport
|
|
|
|
pci
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
pcmcia
|
ARM: always select HAVE_IDE
|
2008-04-28 23:44:43 +02:00 |
|
pnp
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
power
|
x86: olpc: add One Laptop Per Child architecture support
|
2008-04-29 08:06:07 -07:00 |
|
ps3
|
|
|
|
rapidio
|
|
|
|
rtc
|
drivers: use non-racy method for proc entries creation (2)
|
2008-04-29 08:06:22 -07:00 |
|
s390
|
s390: use non-racy method for proc entries creation
|
2008-04-29 08:06:21 -07:00 |
|
sbus
|
|
|
|
scsi
|
scsi: use non-racy method for proc entries creation
|
2008-04-29 08:06:21 -07:00 |
|
serial
|
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
|
2008-04-28 10:51:43 -07:00 |
|
sh
|
|
|
|
sn
|
|
|
|
spi
|
spi: spi_imx updates
|
2008-04-28 08:58:31 -07:00 |
|
ssb
|
|
|
|
tc
|
|
|
|
telephony
|
|
|
|
thermal
|
|
|
|
uio
|
|
|
|
usb
|
usb: use non-racy method for proc entries creation
|
2008-04-29 08:06:21 -07:00 |
|
video
|
proc: remove proc_root from drivers
|
2008-04-29 08:06:18 -07:00 |
|
virtio
|
|
|
|
w1
|
|
|
|
watchdog
|
|
|
|
xen
|
xen: add balloon driver
|
2008-04-24 23:57:33 +02:00 |
|
zorro
|
zorro: use non-racy method for proc entries creation
|
2008-04-29 08:06:21 -07:00 |
|
Kconfig
|
xen: add balloon driver
|
2008-04-24 23:57:33 +02:00 |
|
Makefile
|
|
|