glibc/sysdeps/unix/sysv/linux/hppa/kernel-features.h

27 lines
1.0 KiB
C
Raw Normal View History

/* Set flags signalling availability of kernel features based on given
kernel version number.
Copyright (C) 2006-2016 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
2012-03-10 00:56:38 +01:00
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
/* Support for the utimes syscall was added in 3.14. */
#if __LINUX_KERNEL_VERSION >= 0x030e00
# define __ASSUME_UTIMES 1
Reduce kernel-features.h duplication. This patch reduces duplication between different architectures' kernel-features.h files by making the architecture-independent file define various macros unconditionally (instead of only for a particular list of architectures), with the architecture-specific files then undefining the macros if necessary. Specifically, __ASSUME_O_CLOEXEC (O_CLOEXEC flag to open) and __ASSUME_SOCK_CLOEXEC (SOCK_NONBLOCK and SOCK_CLOEXEC flags to socket) are supported on all architectures as of 2.6.32 or the minimum kernel version for the architecture if later. For __ASSUME_IN_NONBLOCK, __ASSUME_PIPE2, __ASSUME_EVENTFD2, __ASSUME_SIGNALFD4 and __ASSUME_DUP3, the relevant syscalls were added for alpha in 2.6.33 but otherwise the features are available as of 2.6.32. For __ASSUME_UTIMES, support is everywhere in 2.6.32 except for asm-generic architectures and hppa. Although those were the main cases of duplication among kernel-features.h files, some other cases of unnecessary definitions were also cleaned up: the hppa file defined various macros that were either no longer used at all, or defined by the main file by default anyway, the ia64 file had duplicative definitions of __ASSUME_PSELECT and __ASSUME_PPOLL, while mips had such a definition of __ASSUME_IPC64. Really, rather than being defined in the main file then undefined for asm-generic architectures, __ASSUME_UTIMES should become an hppa-specific macro. Given that __ASSUME_ATFCTS and __ASSUME_UTIMENSAT are now always true, the only live __ASSUME_UTIMES conditional is in sysdeps/unix/sysv/linux/utimes.c, which is not used for asm-generic architectures. I think the desired state would be an hppa-specific file (that includes sysdeps/unix/sysv/linux/utimes.c if __ASSUME_UTIMES, and otherwise has fallback code), with the fallback code being removed from the main utimes.c. But I think that's most reasonably a separate cleanup once __ASSUME_ATFCTS and __ASSUME_UTIMESAT have both had conditional code cleaned up. Given this patch, I think it's straightforward to move non-ex-ports architectures to having their own kernel-features.h files, like ex-ports architectures, rather than conditionals in the main file (i.e., such a move won't require the architecture-specific file to contain anything that isn't genuinely architecture-specific), and would encourage architecture maintainers to do so. Tested x86_64 that the installed shared libraries are unchanged by this patch. Note that on some architectures this *will* cause __ASSUME_* macros to be defined in cases where they weren't previously but should have been (but this is just optimization, not a fix to a user-visible bug, so doesn't need a bug report in Bugzilla). * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_UTIMES): Define unconditionally. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_DUP3): Likewise. * sysdeps/unix/sysv/linux/aarch64/kernel-features.h (__ASSUME_DUP3): Do not define. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_UTIMES): Undefine. * sysdeps/unix/sysv/linux/alpha/kernel-features.h (__ASSUME_UTIMES): Do not define. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Undefine if [__LINUX_KERNEL_VERSION < 0x020621] instead of defining if [__LINUX_KERNEL_VERSION >= 0x020621]. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. [__LINUX_KERNEL_VERSION < 0x020621] (__ASSUME_DUP3): Undefine. * sysdeps/unix/sysv/linux/arm/kernel-features.h (__ASSUME_UTIMES): Do not define. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. * sysdeps/unix/sysv/linux/hppa/kernel-features.h (__ASSUME_32BITUIDS): Likewise. (__ASSUME_TRUNCATE64_SYSCALL): Likewise. (__ASSUME_IPC64): Likewise. (__ASSUME_ST_INO_64_BIT): Likewise. (__ASSUME_GETDENTS64_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION < 0x030e00] (__ASSUME_UTIMES): Undefine. * sysdeps/unix/sysv/linux/ia64/kernel-features.h (__ASSUME_UTIMES): Do not define. (__ASSUME_PSELECT): Likewise. (__ASSUME_PPOLL): Likewise. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_DUP3): Likewise. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_UTIMES): Likewise. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_DUP3): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_UTIMES): Likewise. (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_DUP3): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_IPC64): Likewise. (__ASSUME_UTIMES): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. * sysdeps/unix/sysv/linux/tile/kernel-features.h (__ASSUME_O_CLOEXEC): Likewise. (__ASSUME_SOCK_CLOEXEC): Likewise. (__ASSUME_IN_NONBLOCK): Likewise. (__ASSUME_PIPE2): Likewise. (__ASSUME_EVENTFD2): Likewise. (__ASSUME_SIGNALFD4): Likewise. (__ASSUME_DUP3): Likewise. (__ASSUME_UTIMES): Undefine.
2014-05-14 02:45:19 +02:00
#endif
#include_next <kernel-features.h>