#define _BSD_SOURCE #include #include #include #include int getentropy(void *buffer, size_t len) { ssize_t ret; int cs; if (len > 256) { errno = EIO; return -1; } pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); ret = getrandom(buffer, len, 0); pthread_setcancelstate(cs, 0); if (ret != len) { if (ret >= 0) errno = EIO; return -1; } return 0; }