/* Set flags signalling availability of kernel features based on given
   kernel version number.
   Copyright (C) 1999-2003, 2004, 2005 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
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   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/>.  */

/* This file must not contain any C code.  At least it must be protected
   to allow using the file also in assembler files.  */

#if defined __mips__
# include <sgidefs.h>
#endif

#include <linux/version.h>
#define __LINUX_KERNEL_VERSION		LINUX_VERSION_CODE

/* We assume for __LINUX_KERNEL_VERSION the same encoding used in
   linux/version.h.  I.e., the major, minor, and subminor all get a
   byte with the major number being in the highest byte.  This means
   we can do numeric comparisons.

   In the following we will define certain symbols depending on
   whether the describes kernel feature is available in the kernel
   version given by __LINUX_KERNEL_VERSION.  We are not always exactly
   recording the correct versions in which the features were
   introduced.  If somebody cares these values can afterwards be
   corrected.  Most of the numbers here are set corresponding to
   2.2.0.  */

/* `getcwd' system call.  */
#if __LINUX_KERNEL_VERSION >= 131584
# define __ASSUME_GETCWD_SYSCALL	1
#endif

/* When was `poll' introduced?  */
#if __LINUX_KERNEL_VERSION >= 131584
# define __ASSUME_POLL_SYSCALL          1
#endif

/* Real-time signal became usable in 2.1.70.  */
#if __LINUX_KERNEL_VERSION >= 131398
# define __ASSUME_REALTIME_SIGNALS	1
#endif

/* When were the `pread'/`pwrite' syscalls introduced?  */
#if __LINUX_KERNEL_VERSION >= 131584
# define __ASSUME_PREAD_SYSCALL		1
# define __ASSUME_PWRITE_SYSCALL	1
#endif

/* When was `poll' introduced?  */
#if __LINUX_KERNEL_VERSION >= 131584
# define __ASSUME_POLL_SYSCALL		1
#endif

/* The `lchown' syscall was introduced in 2.1.80.  */
#if __LINUX_KERNEL_VERSION >= 131408
# define __ASSUME_LCHOWN_SYSCALL	1
#endif

/* When did the `setresuid' sysall became available?  */
#if __LINUX_KERNEL_VERSION >= 131584 && !defined __sparc__
# define __ASSUME_SETRESUID_SYSCALL	1
#endif

/* The SIOCGIFNAME ioctl is available starting with 2.1.50.  */
#if __LINUX_KERNEL_VERSION >= 131408
# define __ASSUME_SIOCGIFNAME		1
#endif

/* MSG_NOSIGNAL was at least available with Linux 2.2.0.  */
#if __LINUX_KERNEL_VERSION >= 131584
# define __ASSUME_MSG_NOSIGNAL		1
#endif

/* On x86 another `getrlimit' syscall was added in 2.3.25.  */
#if __LINUX_KERNEL_VERSION >= 131865 && defined __i386__
# define __ASSUME_NEW_GETRLIMIT_SYSCALL	1
#endif

/* On x86 the truncate64/ftruncate64 syscalls were introduced in 2.3.31.  */
#if __LINUX_KERNEL_VERSION >= 131871 && defined __i386__
# define __ASSUME_TRUNCATE64_SYSCALL	1
#endif

/* On x86 the mmap2 syscall was introduced in 2.3.31.  */
#if __LINUX_KERNEL_VERSION >= 131871 && defined __i386__
# define __ASSUME_MMAP2_SYSCALL	1
#endif

/* On x86 the stat64/lstat64/fstat64 syscalls were introduced in 2.3.34.  */
#if __LINUX_KERNEL_VERSION >= 131874 && defined __i386__
# define __ASSUME_STAT64_SYSCALL	1
#endif

/* On sparc and ARM the truncate64/ftruncate64/mmap2/stat64/lstat64/fstat64
   syscalls were introduced in 2.3.35.  */
#if __LINUX_KERNEL_VERSION >= 131875 && (defined __sparc__ || defined __arm__)
# define __ASSUME_TRUNCATE64_SYSCALL	1
# define __ASSUME_MMAP2_SYSCALL		1
# define __ASSUME_STAT64_SYSCALL	1
#endif

/* I know for sure that getrlimit are in 2.3.35 on powerpc.  */
#if __LINUX_KERNEL_VERSION >= 131875 && defined __powerpc__
# define __ASSUME_NEW_GETRLIMIT_SYSCALL	1
#endif

/* I know for sure that these are in 2.3.35 on powerpc. But PowerPC64 does not
   support separate 64-bit syscalls, already 64-bit */
#if __LINUX_KERNEL_VERSION >= 131875 && defined __powerpc__ \
    && !defined __powerpc64__
# define __ASSUME_TRUNCATE64_SYSCALL	1
# define __ASSUME_STAT64_SYSCALL	1
#endif

/* Linux 2.3.39 introduced 32bit UID/GIDs.  Some platforms had 32
   bit type all along.  */
#if __LINUX_KERNEL_VERSION >= 131879 || defined __powerpc__ || defined __mips__
# define __ASSUME_32BITUIDS		1
#endif

/* Linux 2.3.39 sparc added setresuid.  */
#if __LINUX_KERNEL_VERSION >= 131879 && defined __sparc__
# define __ASSUME_SETRESUID_SYSCALL	1
#endif

#if __LINUX_KERNEL_VERSION >= 131879
# define __ASSUME_SETRESGID_SYSCALL	1
#endif

/* Linux 2.3.39 introduced IPC64.  Except for powerpc.  */
#if __LINUX_KERNEL_VERSION >= 131879 && !defined __powerpc__
# define __ASSUME_IPC64		1
#endif

/* MIPS platforms had IPC64 all along.  */
#if defined __mips__
# define __ASSUME_IPC64		1
#endif

/* We can use the LDTs for threading with Linux 2.3.99 and newer.  */
#if __LINUX_KERNEL_VERSION >= 131939
# define __ASSUME_LDT_WORKS		1
#endif

/* Linux 2.4.0 on PPC introduced a correct IPC64. But PowerPC64 does not
   support a separate 64-bit sys call, already 64-bit */
#if __LINUX_KERNEL_VERSION >= 132096 && defined __powerpc__ \
    && !defined __powerpc64__
# define __ASSUME_IPC64			1
#endif

/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test.  */
#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__
# define __ASSUME_TRUNCATE64_SYSCALL	1
# define __ASSUME_MMAP2_SYSCALL		1
# define __ASSUME_STAT64_SYSCALL	1
#endif

/* The changed st_ino field appeared in 2.4.0-test6.  But we cannot
   distinguish this version from other 2.4.0 releases.  Therefore play
   save and assume it available is for 2.4.1 and up.  However, SH is lame,
   and still does not have a 64-bit inode field.  */
#if __LINUX_KERNEL_VERSION >= 132097 && !defined __alpha__ && !defined __sh__
# define __ASSUME_ST_INO_64_BIT		1
#endif

/* To support locking of large files a new fcntl() syscall was introduced
   in 2.4.0-test7.  We test for 2.4.1 for the earliest version we know
   the syscall is available.  */
#if __LINUX_KERNEL_VERSION >= 132097 && (defined __i386__ || defined __sparc__)
# define __ASSUME_FCNTL64		1
#endif

/* The AT_CLKTCK auxiliary vector entry was introduction in the 2.4.0
   series.  */
#if __LINUX_KERNEL_VERSION >= 132097
# define __ASSUME_AT_CLKTCK		1
#endif

/* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I
   don't know when it got introduced).  But PowerPC64 does not support
   separate FCNTL64 call, FCNTL is already 64-bit */
#if __LINUX_KERNEL_VERSION >= 132100 \
    && (defined __arm__ || defined __powerpc__ || defined __sh__) \
    && !defined __powerpc64__
# define __ASSUME_FCNTL64		1
#endif

/* The getdents64 syscall was introduced in 2.4.0-test7.  We test for
   2.4.1 for the earliest version we know the syscall is available.  */
#if __LINUX_KERNEL_VERSION >= 132097
# define __ASSUME_GETDENTS64_SYSCALL	1
#endif

/* When did O_DIRECTORY became available?  Early in 2.3 but when?
   Be safe, use 2.3.99.  */
#if __LINUX_KERNEL_VERSION >= 131939
# define __ASSUME_O_DIRECTORY		1
#endif

/* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
   up the page size information.  */
#if __LINUX_KERNEL_VERSION >= 132097
# define __ASSUME_AT_PAGESIZE		1
#endif

/* Starting with at least 2.4.0 the kernel passes the uid/gid unconditionally
   up to the child.  */
#if __LINUX_KERNEL_VERSION >= 132097
# define __ASSUME_AT_XID		1
#endif

/* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way
   and the vfork syscall made it into the official kernel.  */
#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__
# define __ASSUME_STD_AUXV		1
# define __ASSUME_VFORK_SYSCALL		1
#endif

/* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
   kernel.  But PowerPC64 does not support a separate MMAP2 call.  */
#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ \
    && !defined __powerpc64__
# define __ASSUME_MMAP2_SYSCALL		1
#endif

/* Starting with 2.4.21 PowerPC implements the new prctl syscall.
   This allows applications to get/set the Floating Point Exception Mode.  */
#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__
# define __ASSUME_NEW_PRCTL_SYSCALL		1
#endif

/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected.  */
#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \
    && !defined __powerpc64__
# define __ASSUME_FIXED_CLONE_SYSCALL		1
#endif

/* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall.
   The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn
   to be used in the set/swapcontext implementation.  */
#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc64__
# define __ASSUME_NEW_RT_SIGRETURN_SYSCALL		1
#endif

/* On x86, the set_thread_area syscall was introduced in 2.5.29, but its
   semantics was changed in 2.5.30, and again after 2.5.31.  */
#if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__
# define __ASSUME_SET_THREAD_AREA_SYSCALL	1
#endif

/* The vfork syscall on x86 and arm was definitely available in 2.4.  */
#if __LINUX_KERNEL_VERSION >= 132097 && (defined __i386__ || defined __arm__)
# define __ASSUME_VFORK_SYSCALL		1
#endif

/* There are an infinite number of PA-RISC kernel versions numbered
   2.4.0.  But they've not really been released as such.  We require
   and expect the final version here.  */
#ifdef __hppa__
# define __ASSUME_32BITUIDS		1
# define __ASSUME_TRUNCATE64_SYSCALL	1
# define __ASSUME_MMAP2_SYSCALL		1
# define __ASSUME_STAT64_SYSCALL	1
# define __ASSUME_IPC64			1
# define __ASSUME_ST_INO_64_BIT		1
# define __ASSUME_FCNTL64		1
# define __ASSUME_GETDENTS64_SYSCALL	1
#endif

/* Alpha switched to a 64-bit timeval sometime before 2.2.0.  */
#if __LINUX_KERNEL_VERSION >= 131584 && defined __alpha__
# define __ASSUME_TIMEVAL64		1
#endif

#if defined __mips__ && _MIPS_SIM == _ABIN32
# define __ASSUME_FCNTL64		1
#endif

/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
   their availability with one define.  The changes were made first
   for i386 and the have to be done separately for the other archs.
   For i386 we pick 2.5.50 as the first version with support.  */
#if __LINUX_KERNEL_VERSION >= 132402 && defined __i386__
# define __ASSUME_CLONE_THREAD_FLAGS	1
#endif

/* Support for various CLOEXEC and NONBLOCK flags was added for x86,
   x86-64, PPC, IA-64, SPARC< and S390 in 2.6.23.  */
#if __LINUX_KERNEL_VERSION >= 0x020617 \
    && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
	|| defined __ia64__ || defined __sparc__ || defined __s390__)
# define __ASSUME_O_CLOEXEC 1
#endif

/* Support for various CLOEXEC and NONBLOCK flags was added for x86,
 *    x86-64, PPC, IA-64, and SPARC in 2.6.27.  */
#if (__LINUX_KERNEL_VERSION >= 0x02061b \
     && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
         || defined __ia64__ || defined __sparc__ || defined __s390__) \
	) || (__LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__) \
	|| defined __aarch64__ || defined __tile__
/* # define __ASSUME_SOCK_CLOEXEC  1 */
/* # define __ASSUME_IN_NONBLOCK   1 */
# define __ASSUME_PIPE2         1
/* # define __ASSUME_EVENTFD2      1 */
/* # define __ASSUME_SIGNALFD4     1 */
/* # define __ASSUME_DUP3		1 */
#endif

/* These features were surely available with 2.4.12.  */
#if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__
# define __ASSUME_MMAP2_SYSCALL		1
# define __ASSUME_TRUNCATE64_SYSCALL	1
# define __ASSUME_STAT64_SYSCALL	1
# define __ASSUME_FCNTL64		1
# define __ASSUME_VFORK_SYSCALL		1
#endif

/* Beginning with 2.5.63 support for realtime and monotonic clocks and
   timers based on them is available.  */
#if __LINUX_KERNEL_VERSION >= 132415
# define __ASSUME_POSIX_TIMERS		1
#endif

/* Beginning with 2.6.12 the clock and timer supports CPU clocks.  */
#if __LINUX_KERNEL_VERSION >= 0x2060c
# define __ASSUME_POSIX_CPU_TIMERS      1
#endif

/* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
   their availability with one define.  The changes were made first
   for i386 and the have to be done separately for the other archs.
   For ia64, s390*, PPC, x86-64 we pick 2.5.64 as the first version
   with support.  */
#if __LINUX_KERNEL_VERSION >= 132416 \
    && (defined __ia64__ || defined __s390__ || defined __powerpc__ \
	|| defined __x86_64__ || defined __sh__)
# define __ASSUME_CLONE_THREAD_FLAGS	1
#endif

/* With kernel 2.4.17 we always have netlink support.  */
#if __LINUX_KERNEL_VERSION >= (132096+17)
# define __ASSUME_NETLINK_SUPPORT	1
#endif

/* The requeue futex functionality was introduced in 2.5.70.  */
#if __LINUX_KERNEL_VERSION >= 132422
# define __ASSUME_FUTEX_REQUEUE	1
#endif

/* The statfs64 syscalls are available in 2.5.74.  */
#if __LINUX_KERNEL_VERSION >= 132426
# define __ASSUME_STATFS64	1
#endif

/* Starting with at least 2.5.74 the kernel passes the setuid-like exec
   flag unconditionally up to the child.  */
#if __LINUX_KERNEL_VERSION >= 132426
# define __ASSUME_AT_SECURE	1
#endif

/* Starting with the 2.5.75 kernel the kernel fills in the correct value
   in the si_pid field passed as part of the siginfo_t struct to signal
   handlers.  */
#if __LINUX_KERNEL_VERSION >= 132427
# define __ASSUME_CORRECT_SI_PID	1
#endif

/* The tgkill syscall was instroduced for i386 in 2.5.75.  For Alpha
   it was introduced in 2.6.0-test1 which unfortunately cannot be
   distinguished from 2.6.0.  On x86-64, ppc, and ppc64 it was
   introduced in 2.6.0-test3. */
#if (__LINUX_KERNEL_VERSION >= 132427 && defined __i386__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __alpha__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __x86_64__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __powerpc__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __sh__)
# define __ASSUME_TGKILL	1
#endif

/* The utimes syscall has been available for some architectures
   forever.  For x86 it was introduced after 2.5.75, for x86-64,
   ppc, and ppc64 it was introduced in 2.6.0-test3.  */
#if defined __alpha__ || defined __ia64__ || defined __hppa__ \
    || defined __sparc__ \
    || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__) \
    || (__LINUX_KERNEL_VERSION > 132609 && defined __x86_64__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __powerpc__) \
    || (__LINUX_KERNEL_VERSION >= 132609 && defined __sh__)
# define __ASSUME_UTIMES	1
#endif

// XXX Disabled for now since the semantics we want is not achieved.
#if 0
/* The CLONE_STOPPED flag was introduced in the 2.6.0-test1 series.  */
#if __LINUX_KERNEL_VERSION >= 132609
# define __ASSUME_CLONE_STOPPED	1
#endif
#endif

/* The fixed version of the posix_fadvise64 syscall appeared in
   2.6.0-test3.  At least for x86.  Powerpc support appeared in
   2.6.2, but for 32-bit userspace only.  */
#if (__LINUX_KERNEL_VERSION >= 132609 && defined __i386__) \
    || (__LINUX_KERNEL_VERSION >= 132610 && defined __powerpc__ \
       && !defined __powerpc64__)
# define __ASSUME_FADVISE64_64_SYSCALL	1
#endif

/* The PROT_GROWSDOWN/PROT_GROWSUP flags were introduced in the 2.6.0-test
   series.  */
#if __LINUX_KERNEL_VERSION >= 132609
# define __ASSUME_PROT_GROWSUPDOWN	1
#endif

/* Starting with 2.6.0 PowerPC adds signal/swapcontext support for Vector
   SIMD (AKA Altivec, VMX) instructions and register state.  This changes
   the overall size of the sigcontext and adds the swapcontext syscall.  */
#if __LINUX_KERNEL_VERSION >= 132608 && defined __powerpc__
# define __ASSUME_SWAPCONTEXT_SYSCALL	1
#endif

/* The CLONE_DETACHED flag is not necessary in 2.6.2 kernels, it is
   implied.  */
#if __LINUX_KERNEL_VERSION >= 132610
# define __ASSUME_NO_CLONE_DETACHED	1
#endif

/* Starting with version 2.6.4-rc1 the getdents syscall returns d_type
   information as well and in between 2.6.5 and 2.6.8 most compat wrappers
   were fixed too.  Except s390{,x} which was fixed in 2.6.11.  */
#if (__LINUX_KERNEL_VERSION >= 0x020608 && !defined __s390__) \
    || (__LINUX_KERNEL_VERSION >= 0x02060b && defined __s390__)
# define __ASSUME_GETDENTS32_D_TYPE	1
#endif

/* Starting with version 2.5.3, the initial location returned by `brk'
   after exec is always rounded up to the next page.  */
#if __LINUX_KERNEL_VERSION >= 132355
# define __ASSUME_BRK_PAGE_ROUNDED	1
#endif

/* Starting with version 2.6.9, the waitid system call is available.
   Except for powerpc and powerpc64, where it is available in 2.6.12.  */
#if (__LINUX_KERNEL_VERSION >= 0x020609 && !defined __powerpc__) \
    || (__LINUX_KERNEL_VERSION >= 0x02060c && defined __powerpc__)
# define __ASSUME_WAITID_SYSCALL	1
#endif

/* Starting with version 2.6.9, SSI_IEEE_RAISE_EXCEPTION exists.  */
#if __LINUX_KERNEL_VERSION >= 0x020609 && defined __alpha__
#define __ASSUME_IEEE_RAISE_EXCEPTION	1
#endif

/* Support for the accept4 syscall was added in 2.6.28.  */
#if __LINUX_KERNEL_VERSION >= 0x02061c \
    && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \
        || defined __sparc__ || defined __s390__)
# define __ASSUME_ACCEPT4       1
#endif

/* Support for the accept4 syscall for alpha was added after 2.6.33-rc1.  */
#if __LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__
# define __ASSUME_ACCEPT4       1
#endif

/* Support for the FUTEX_CLOCK_REALTIME flag was added in 2.6.29.  */
#if __LINUX_KERNEL_VERSION >= 0x02061d
# define __ASSUME_FUTEX_CLOCK_REALTIME	1
#endif

/* Support for PI futexes was added in 2.6.18.  */
#if __LINUX_KERNEL_VERSION >= 0x020612
# define __ASSUME_FUTEX_LOCK_PI	1
#endif

/* Support for private futexes was added in 2.6.22.  */
#if __LINUX_KERNEL_VERSION >= 0x020616
# define __ASSUME_PRIVATE_FUTEX	1
#endif

/* Support for fallocate was added in 2.6.23,
   on s390 only after 2.6.23-rc1, on alpha only after 2.6.33-rc1.  */
#if __LINUX_KERNEL_VERSION >= 0x020617 \
    && (!defined __s390__ || __LINUX_KERNEL_VERSION >= 0x020618) \
    && (!defined __alpha__ || __LINUX_KERNEL_VERSION >= 0x020621)
# define __ASSUME_FALLOCATE 1
#endif

/* getcpu is a syscall for x86-64 since 3.1.  */
#if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100
# define __ASSUME_GETCPU_SYSCALL        1
#endif

/* getrandom syscall (widely) appeared around 4.0.0 */
#if __LINUX_KERNEL_VERSION >= 0x040000
# define __ASSUME_GETRANDOM_SYSCALL 1
#endif
