Commit 79b74aeb authored by Victor Stinner's avatar Victor Stinner

Issue #22181: os.urandom() now releases the GIL when the getrandom()

implementation is used.
parent a52f31df
......@@ -115,9 +115,18 @@ py_getrandom(void *buffer, Py_ssize_t size, int raise)
while (0 < size) {
errno = 0;
/* the libc doesn't expose getrandom() yet, see:
/* Use syscall() because the libc doesn't expose getrandom() yet, see:
* https://sourceware.org/bugzilla/show_bug.cgi?id=17252 */
n = syscall(SYS_getrandom, buffer, size, flags);
if (raise) {
Py_BEGIN_ALLOW_THREADS
n = syscall(SYS_getrandom, buffer, size, flags);
Py_END_ALLOW_THREADS
}
else {
n = syscall(SYS_getrandom, buffer, size, flags);
}
if (n < 0) {
if (errno == ENOSYS) {
getrandom_works = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment