123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #define _DEFAULT_SOURCE
- #include <errno.h>
- #include <unistd.h>
- #include <sys/random.h>
- #ifdef __NR_getrandom
- int
- getentropy(void *__buf, size_t __len)
- {
- ssize_t n;
- if (__len > 256U) {
- errno = EIO;
- return (-1);
- }
- again:
- if ((n = getrandom(__buf, __len, 0)) == -1)
- switch (errno) {
- case EAGAIN:
- case EINTR:
- goto again;
- default:
- errno = EIO;
-
- case EFAULT:
- case ENOSYS:
- return (-1);
- }
- if ((size_t)n != __len)
-
- goto again;
- return (0);
- }
- #endif
|