1*8ccd4a63SDavid du Colombier #include <u.h> 2*8ccd4a63SDavid du Colombier #include <libc.h> 3*8ccd4a63SDavid du Colombier 4*8ccd4a63SDavid du Colombier ulong truerand(void)5*8ccd4a63SDavid du Colombiertruerand(void) 6*8ccd4a63SDavid du Colombier { 7*8ccd4a63SDavid du Colombier ulong x; 8*8ccd4a63SDavid du Colombier static int randfd = -1; 9*8ccd4a63SDavid du Colombier 10*8ccd4a63SDavid du Colombier if(randfd < 0) 11*8ccd4a63SDavid du Colombier randfd = open("/dev/random", OREAD|OCEXEC); 12*8ccd4a63SDavid du Colombier if(randfd < 0) 13*8ccd4a63SDavid du Colombier sysfatal("can't open /dev/random"); 14*8ccd4a63SDavid du Colombier if(read(randfd, &x, sizeof(x)) != sizeof(x)) 15*8ccd4a63SDavid du Colombier sysfatal("can't read /dev/random"); 16*8ccd4a63SDavid du Colombier return x; 17*8ccd4a63SDavid du Colombier } 18