From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12295 Path: news.gmane.org!.POSTED!not-for-mail From: Hauke Mehrtens Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH] Add getrandom syscall wrapper function Date: Mon, 1 Jan 2018 21:31:23 +0100 Message-ID: <20180101203123.12816-1-hauke@hauke-m.de> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1514838590 12560 195.159.176.226 (1 Jan 2018 20:29:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 1 Jan 2018 20:29:50 +0000 (UTC) Cc: Hauke Mehrtens To: musl@lists.openwall.com Original-X-From: musl-return-12311-gllmg-musl=m.gmane.org@lists.openwall.com Mon Jan 01 21:29:46 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1eW6iL-0002gr-K4 for gllmg-musl@m.gmane.org; Mon, 01 Jan 2018 21:29:41 +0100 Original-Received: (qmail 7796 invoked by uid 550); 1 Jan 2018 20:31:42 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 7762 invoked from network); 1 Jan 2018 20:31:42 -0000 X-Virus-Scanned: amavisd-new at heinlein-support.de Xref: news.gmane.org gmane.linux.lib.musl.general:12295 Archived-At: 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 + +#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 +#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