]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Add __ASSUME_DIRECT_SYSVIPC_SYSCALL for Linux
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 2 Nov 2016 17:41:15 +0000 (15:41 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 28 Dec 2016 22:28:56 +0000 (20:28 -0200)
On current minimum supported kernels, the SysV IPC on Linux is provided
by either the ipc syscalls or correspondent wire syscalls.  Also, for
architectures that supports wire syscalls all syscalls are supported
in a set (msgct, msgrcv, msgsnd, msgget, semctl, semget, semop, semtimedop,
shmctl, shmat, shmget, shmdt).

The architectures that only supports ipc syscall are:

  - i386, m68k, microblaze, mips32, powerpc (powerpc32, powerpc64, and
    powerpc64le), s390 (32 and 64 bits), sh, sparc32, and sparc64.

And the architectures that only supports wired syscalls are:

  - aarch64, alpha, hppa, ia64, mips64, mips64n32, nios2, tile
    (tilepro, tilegx, and tilegx64), and x86_64

Also arm is the only one that supports both wire syscalls and the
ipc, although the ipc one is deprecated.

This patch adds a new define, __ASSUME_DIRECT_SYSVIPC_SYSCALL, that wired
syscalls are supported on the system and the general idea is to use
it where possible.

I also checked the syscall table for all architectures on Linux 4.9
and there is no change on described support for Linux 2.6.32/3.2.

* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): New define.
* sysdeps/unix/sysv/linux/i386/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Undef.
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/mips/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/s390/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/sh/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
(__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise.

ChangeLog
sysdeps/unix/sysv/linux/i386/kernel-features.h
sysdeps/unix/sysv/linux/kernel-features.h
sysdeps/unix/sysv/linux/m68k/kernel-features.h
sysdeps/unix/sysv/linux/mips/kernel-features.h
sysdeps/unix/sysv/linux/powerpc/kernel-features.h
sysdeps/unix/sysv/linux/s390/kernel-features.h
sysdeps/unix/sysv/linux/sh/kernel-features.h
sysdeps/unix/sysv/linux/sparc/kernel-features.h

index 1ad68675c253bbc4fbe9491e06c72c1ba09241c5..e942c298f38b9ef526e95ea6101a697d8e3353c0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2016-12-28  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+       * sysdeps/unix/sysv/linux/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): New define.
+       * sysdeps/unix/sysv/linux/i386/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Undef.
+       * sysdeps/unix/sysv/linux/m68k/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+       * sysdeps/unix/sysv/linux/mips/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+       * sysdeps/unix/sysv/linux/s390/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+       * sysdeps/unix/sysv/linux/sh/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+       * sysdeps/unix/sysv/linux/sparc/kernel-features.h
+       (__ASSUME_DIRECT_SYSVIPC_SYSCALLS): Likewise.
+
 2016-12-28  Tulio Magno Quites Machado Filho  <tuliom@linux.vnet.ibm.com>
 
        * sysdeps/powerpc/powerpc32/power7/memchr.S (__memchr): Avoid an
index 148963c36ce46a5acfa3f3322d8d103eafe1aa5b..0a557f8d7d75542dbed323862f77b3c8cdeea584 100644 (file)
@@ -52,3 +52,6 @@
 # undef __ASSUME_SENDMSG_SYSCALL
 # undef __ASSUME_RECVMSG_SYSCALL
 #endif
+
+/* i686 only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
index 1d3b554f81f44f4dadf13fdad2a491b7bab98883..19125ce85c3fc997c6fb053cdb0f4e615b431e96 100644 (file)
    separate syscalls were only added later.  */
 #define __ASSUME_SENDMSG_SYSCALL       1
 #define __ASSUME_RECVMSG_SYSCALL       1
+
+/* 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
index 46ec60115f13aff7f0d6c5216fd46441ff73ea87..b03de4cef137324c8f044bc08a4aaf5bbe31089c 100644 (file)
@@ -54,3 +54,6 @@
 # undef __ASSUME_REQUEUE_PI
 # undef __ASSUME_SET_ROBUST_LIST
 #endif
+
+/* m68k only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
index b486d904c33206cb5a24c0955c87eba10bc09a1e..fae34aaa183aa4643fc37cd9bb009bdd8b839162 100644 (file)
@@ -32,6 +32,8 @@
    pairs to start with an even-number register.  */
 #if _MIPS_SIM == _ABIO32
 # define __ASSUME_ALIGNED_REGISTER_PAIRS       1
+/* mips32 only supports ipc syscall.  */
+# undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
 #endif
 
 /* Define that mips64-n32 is a ILP32 ABI to set the correct interface to
index 42a53f2c1c0d8b9f6c1f3b884ec0c6666449238e..5a84b6b3d3c3937384fe0749fe4ef2c8847583e2 100644 (file)
@@ -52,3 +52,6 @@
 #endif
 
 #include_next <kernel-features.h>
+
+/* powerpc only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
index b3edee4b62366695e03fa4edb69b8f08e0c79c92..10eade3c5e08d702451eab561f85e14839053ac3 100644 (file)
@@ -48,3 +48,6 @@
 # undef __ASSUME_SENDMSG_SYSCALL
 # undef __ASSUME_RECVMSG_SYSCALL
 #endif
+
+/* s390 only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
index d03aafac7567359490bfb8007e95e04c985a7e0d..9eb8ff46d97f7576d2b66713e3022aa1db6506fc 100644 (file)
@@ -54,4 +54,7 @@
    before the offset.  */
 #define __ASSUME_PRW_DUMMY_ARG 1
 
+/* sh only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+
 #endif
index 69c9c7c84e954f31fb871fc04c951e52b6ce18fa..e487efecf122202a39d3204239e7fcadb72dffd5 100644 (file)
@@ -37,3 +37,6 @@
 # undef __ASSUME_REQUEUE_PI
 # undef __ASSUME_SET_ROBUST_LIST
 #endif
+
+/* sparc only supports ipc syscall.  */
+#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS