Browse Source

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.
Hauke Mehrtens 7 years ago
parent
commit
e206582091
2 changed files with 26 additions and 0 deletions
  1. 19 0
      include/sys/random.h
  2. 7 0
      src/linux/getrandom.c

+ 19 - 0
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

+ 7 - 0
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);
+}