/* Set flags signalling availability of kernel features based on given
kernel version number.
- Copyright (C) 1999-2019 Free Software Foundation, Inc.
+ Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
+ <https://www.gnu.org/licenses/>. */
/* This file must not contain any C code. At least it must be protected
to allow using the file also in assembler files. */
SH this appeared first in 2.6.19-rc1, on ia64 in 2.6.22-rc1. */
#define __ASSUME_PSELECT 1
-/* The *at syscalls were introduced just after 2.6.16-rc1. On PPC
- they were introduced in 2.6.17-rc1, on SH in 2.6.19-rc1. */
-#define __ASSUME_ATFCTS 1
-
/* Support for inter-process robust mutexes was added in 2.6.17 (but
some architectures lack futex_atomic_cmpxchg_inatomic in some
configurations). */
/* Support for SysV IPC through wired syscalls. All supported architectures
either support ipc syscall and/or all the ipc correspondent syscalls. */
#define __ASSUME_DIRECT_SYSVIPC_SYSCALLS 1
+/* The generic default __IPC_64 value is 0x0, however some architectures
+ require a different value of 0x100. */
+#define __ASSUME_SYSVIPC_DEFAULT_IPC_64 1
+
+/* All supported architectures reserve a 32-bit for MODE field in sysvipc
+ ipc_perm. However, some kernel ABI interfaces still expect a 16-bit
+ field. This is only an issue if arch-defined IPC_PERM padding is on a
+ wrong position regarding endianness. In this case, the IPC control
+ routines (msgctl, semctl, and semtctl) requires to shift the value to
+ correct place.
+ The ABIs that requires it define __ASSUME_SYSVIPC_BROKEN_MODE_T. */
/* Support for p{read,write}v2 was added in 4.6. However Linux default
implementation does not assume the __ASSUME_* and instead use a fallback
# define __ASSUME_TIME64_SYSCALLS 1
#endif
+/* Linux waitid prior kernel 5.4 does not support waiting for the current
+ process group. */
+#if __LINUX_KERNEL_VERSION >= 0x050400
+# define __ASSUME_WAITID_PID0_P_PGID
+#endif
+
+/* The faccessat2 system call was introduced across all architectures
+ in Linux 5.8. */
+#if __LINUX_KERNEL_VERSION >= 0x050800
+# define __ASSUME_FACCESSAT2 1
+#else
+# define __ASSUME_FACCESSAT2 0
+#endif
+
#endif /* kernel-features.h */