![]() |
|
Message-Id: <20180101203123.12816-1-hauke@hauke-m.de> Date: Mon, 1 Jan 2018 21:31:23 +0100 From: Hauke Mehrtens <hauke@...ke-m.de> To: musl@...ts.openwall.com Cc: Hauke Mehrtens <hauke@...ke-m.de> Subject: [PATCH] Add getrandom syscall wrapper function This syscall is available since Linux 3.17 and was also implemented in glibc in version 2.25. This is a pure syscall wrapper liker glibc does it. --- include/sys/random.h | 19 +++++++++++++++++++ src/linux/getrandom.c | 11 +++++++++++ 2 files changed, 30 insertions(+) create mode 100644 include/sys/random.h create mode 100644 src/linux/getrandom.c diff --git a/include/sys/random.h b/include/sys/random.h new file mode 100644 index 00000000..5540f877 --- /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 *buf, size_t buflen, unsigned int flags); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/linux/getrandom.c b/src/linux/getrandom.c new file mode 100644 index 00000000..50b07df9 --- /dev/null +++ b/src/linux/getrandom.c @@ -0,0 +1,11 @@ +#include <sys/random.h> +#include "syscall.h" + +ssize_t getrandom(void *buf, size_t buflen, unsigned int flags) +{ +#ifdef SYS_getrandom + return syscall_cp(SYS_getrandom, buf, buflen, flags); +#else + return __syscall_ret(-ENOSYS); +#endif +} -- 2.11.0
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.