#include #include #include "syscall.h" int getentropy(void *buffer, size_t length) { int ret; char *pos = buffer; size_t rem = length; if (length > 256) { return __syscall_ret(-EIO); } while (rem) { ret = __syscall_cp(SYS_getrandom, pos, rem, 0); if (ret == -EINTR) { continue; } else if (ret == -EFAULT || ret == -ENOSYS) { return __syscall_ret(ret); } else if (ret <= 0) { return __syscall_ret(-EIO); } pos += ret; rem -= ret; } return 0; }