1/** We have to replace glibc getrandom only when glibc version is higher than 2.25.
2 * In previous versions of glibc this function doesn't exist
3 * and old kernels may be missing SYS_getrandom syscall.
4 */
5#include <features.h>
6#if defined(__GLIBC__) && __GLIBC__ >= 2
7# define GLIBC_MINOR __GLIBC_MINOR__
8#elif defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ >= 2
9# define GLIBC_MINOR __GNU_LIBRARY_MINOR__
10#endif
11
12#if defined(GLIBC_MINOR) && GLIBC_MINOR >= 25
13
14#include <unistd.h>
15#include <syscall.h>
16#include "syscall.h"
17
18ssize_t getrandom(void *buf, size_t buflen, unsigned flags)
19{
20 /// There was cancellable syscall (syscall_cp), but I don't care too.
21 return syscall(SYS_getrandom, buf, buflen, flags);
22}
23#endif
24