chiark / gitweb /
missing: simplify memfd ifdeffery
[elogind.git] / src / shared / missing.h
index bb4f8f23a8c2d7138de00e9067fa833b0a47b8b9..0cfb6fa4c3895e1740b78c0413b331fcc4792f2c 100644 (file)
@@ -115,21 +115,15 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
 }
 #endif
 
-#ifdef __x86_64__
-#  ifndef __NR_memfd_create
+#ifndef __NR_memfd_create
+#  if defined __x86_64__
 #    define __NR_memfd_create 319
-#  endif
-#elif defined __arm__
-#  ifndef __NR_memfd_create
+#  elif defined __arm__
 #    define __NR_memfd_create 385
-#  endif
-#elif defined _MIPS_SIM
-#  ifndef __NR_memfd_create
+#  elif defined _MIPS_SIM
 #    warning "__NR_memfd_create not yet defined for MIPS"
 #    define __NR_memfd_create 0xffffffff
-#  endif
-#else
-#  ifndef __NR_memfd_create
+#  else
 #    define __NR_memfd_create 356
 #  endif
 #endif
@@ -140,6 +134,21 @@ static inline int memfd_create(const char *name, unsigned int flags) {
 }
 #endif
 
+#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