summaryrefslogtreecommitdiff
path: root/src/shared/missing.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-10-31 11:58:25 -0400
committerAnthony G. Basile <blueness@gentoo.org>2014-10-31 11:58:25 -0400
commitea79c9cdf08072304aa6e464629cdd4b96d183a6 (patch)
treecd6fa54f52b44bfce67645440c210e422bc5fa8b /src/shared/missing.h
parentfb45281a7a8147e05616a65333094ea744029230 (diff)
util: make use of the new getrandom() syscall if it is available when needing entropy
Doesn't require an fd, and could be a bit faster, so let's make use of it, if it is available. Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'src/shared/missing.h')
-rw-r--r--src/shared/missing.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/shared/missing.h b/src/shared/missing.h
index 572e17117a..50f0d56c4a 100644
--- a/src/shared/missing.h
+++ b/src/shared/missing.h
@@ -42,6 +42,21 @@
/* If RLIMIT_RTTIME is not defined, then we cannot use RLIMIT_NLIMITS as is */
#define _RLIMIT_MAX (RLIMIT_RTTIME+1 > RLIMIT_NLIMITS ? RLIMIT_RTTIME+1 : RLIMIT_NLIMITS)
+#ifndef __NR_getrandom
+# if defined __x86_64__
+# define __NR_getrandom 278
+# else
+# warning "__NR_getrandom unknown for your architecture"
+# define __NR_getrandom 0xffffffff
+# endif
+#endif
+
+#if !HAVE_DECL_GETRANDOM
+static inline int getrandom(void *buffer, size_t count, unsigned flags) {
+ return syscall(__NR_getrandom, buffer, count, flags);
+}
+#endif
+
#ifndef BTRFS_IOCTL_MAGIC
#define BTRFS_IOCTL_MAGIC 0x94
#endif