diff options
author | Hauke Mehrtens <hauke@hauke-m.de> | 2018-01-06 23:08:09 +0100 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2018-02-22 19:34:58 -0500 |
commit | e20658209177667e490c661dfd35b976749ef3f7 (patch) | |
tree | 4cd8f51746279d1b156a6d1a4ea43b46a5dbf537 | |
parent | 9bed82df305f5d1b7ebc36d0ac7a75d4f834e69b (diff) | |
download | musl-e20658209177667e490c661dfd35b976749ef3f7.tar.gz musl-e20658209177667e490c661dfd35b976749ef3f7.tar.bz2 musl-e20658209177667e490c661dfd35b976749ef3f7.tar.xz musl-e20658209177667e490c661dfd35b976749ef3f7.zip |
add getrandom syscall wrapper
This syscall is available since Linux 3.17 and was also implemented in
glibc in version 2.25 using the same interfaces.
-rw-r--r-- | include/sys/random.h | 19 | ||||
-rw-r--r-- | src/linux/getrandom.c | 7 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/sys/random.h b/include/sys/random.h new file mode 100644 index 00000000..4ee7bf2c --- /dev/null +++ b/include/sys/random.h @@ -0,0 +1,19 @@ +#ifndef _SYS_RANDOM_H +#define _SYS_RANDOM_H +#ifdef __cplusplus +extern "C" { +#endif + +#define __NEED_size_t +#define __NEED_ssize_t +#include <bits/alltypes.h> + +#define GRND_NONBLOCK 0x0001 +#define GRND_RANDOM 0x0002 + +ssize_t getrandom(void *, size_t, unsigned); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/linux/getrandom.c b/src/linux/getrandom.c new file mode 100644 index 00000000..6cc6f6b0 --- /dev/null +++ b/src/linux/getrandom.c @@ -0,0 +1,7 @@ +#include <sys/random.h> +#include "syscall.h" + +ssize_t getrandom(void *buf, size_t buflen, unsigned flags) +{ + return syscall_cp(SYS_getrandom, buf, buflen, flags); +} |