int getentropy(void *buf, size_t len) { int ret, pre_errno = errno; if (len > 256) { errno = EIO; return -1; } while ((ret = __syscall(SYS_getrandom, buf, len, 0)) == -EINTR); if (ret != len) return -1; errno = pre_errno; return 0; }