chiark / gitweb /
missing: add __NR_getrandom for powerpc architecture
[elogind.git] / src / shared / missing.h
index 94d9d8d35dd3e8e66daeee4e787c14e83ba2391b..4cc6fdc069532b8bfd27ae8238453228459828b1 100644 (file)
 #define F_SEAL_WRITE    0x0008  /* prevent writes */
 #endif
 
+#ifndef F_OFD_GETLK
+#define F_OFD_GETLK     36
+#define F_OFD_SETLK     37
+#define F_OFD_SETLKW    38
+#endif
+
 #ifndef MFD_ALLOW_SEALING
 #define MFD_ALLOW_SEALING 0x0002U
 #endif
@@ -130,6 +136,8 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
 #    define __NR_memfd_create 319
 #  elif defined __arm__
 #    define __NR_memfd_create 385
+#  elif defined __aarch64__
+#    define __NR_memfd_create 279
 #  elif defined _MIPS_SIM
 #    if _MIPS_SIM == _MIPS_SIM_ABI32
 #      define __NR_memfd_create 4354
@@ -159,14 +167,18 @@ static inline int memfd_create(const char *name, unsigned int flags) {
 #    define __NR_getrandom 318
 #  elif defined(__i386__)
 #    define __NR_getrandom 355
-#  elif defined(__arm__) || defined(__aarch64__)
+#  elif defined(__arm__)
 #    define __NR_getrandom 384
+# elif defined(__aarch64__)
+#    define __NR_getrandom 278
 #  elif defined(__ia64__)
 #    define __NR_getrandom 1339
 #  elif defined(__m68k__)
 #    define __NR_getrandom 352
 #  elif defined(__s390x__)
 #    define __NR_getrandom 349
+#  elif defined(__powerpc__)
+#    define __NR_getrandom 359
 #  else
 #    warning "__NR_getrandom unknown for your architecture"
 #    define __NR_getrandom 0xffffffff
@@ -435,6 +447,18 @@ static inline int setns(int fd, int nstype) {
 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
 #endif
 
+#if !HAVE_DECL_IFLA_IPVLAN_MODE
+#define IFLA_IPVLAN_UNSPEC 0
+#define IFLA_IPVLAN_MODE 1
+#define __IFLA_IPVLAN_MAX 2
+
+#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
+
+#define IPVLAN_MODE_L2 0
+#define IPVLAN_MODE_L3 1
+#define IPVLAN_MAX 2
+#endif
+
 #if !HAVE_DECL_IFLA_VTI_REMOTE
 #define IFLA_VTI_UNSPEC 0
 #define IFLA_VTI_LINK 1
@@ -679,6 +703,30 @@ static inline pid_t raw_getpid(void) {
 }
 
 #if !HAVE_DECL_RENAMEAT2
+
+#ifndef __NR_renameat2
+#  if defined __x86_64__
+#    define __NR_renameat2 316
+#  elif defined __arm__
+#    define __NR_renameat2 382
+#  elif defined _MIPS_SIM
+#    if _MIPS_SIM == _MIPS_SIM_ABI32
+#      define __NR_renameat2 4351
+#    endif
+#    if _MIPS_SIM == _MIPS_SIM_NABI32
+#      define __NR_renameat2 6315
+#    endif
+#    if _MIPS_SIM == _MIPS_SIM_ABI64
+#      define __NR_renameat2 5311
+#    endif
+#  elif defined __i386__
+#    define __NR_renameat2 353
+#  else
+#    warning "__NR_renameat2 unknown for your architecture"
+#    define __NR_renameat2 0xffffffff
+#  endif
+#endif
+
 static inline int renameat2(int oldfd, const char *oldname, int newfd, const char *newname, unsigned flags) {
         return syscall(__NR_renameat2, oldfd, oldname, newfd, newname, flags);
 }
@@ -687,3 +735,13 @@ static inline int renameat2(int oldfd, const char *oldname, int newfd, const cha
 #ifndef RENAME_NOREPLACE
 #define RENAME_NOREPLACE (1 << 0)
 #endif
+
+#if !HAVE_DECL_KCMP
+static inline int kcmp(pid_t pid1, pid_t pid2, int type, unsigned long idx1, unsigned long idx2) {
+        return syscall(__NR_kcmp, pid1, pid2, type, idx1, idx2);
+}
+#endif
+
+#ifndef KCMP_FILE
+#define KCMP_FILE 0
+#endif