]> sourceware.org Git - glibc.git/commitdiff
Use semop syscall for Linux implementation
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 26 Oct 2016 19:01:43 +0000 (17:01 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 28 Dec 2016 22:31:04 +0000 (20:31 -0200)
This patch add a direct call to semop syscall if it is supported by
kernel headers.

Checked on x86_64, i686, powerpc64le, aarch64, and armhf.

* sysdeps/unix/sysv/linux/alpha/syscalls.list (semop): Remove.
* sysdeps/unix/sysv/linux/arm/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/generic/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/hppa/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/ia64/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/microblaze/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (semop):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semop):
Likewise.
* sysdeps/unix/sysv/linux/x86_64/syscalls.list (semop): Likewise.
* sysdeps/unix/sysv/linux/semop.c (semop): Use semop syscall if it is
defined.

ChangeLog
sysdeps/unix/sysv/linux/alpha/syscalls.list
sysdeps/unix/sysv/linux/arm/syscalls.list
sysdeps/unix/sysv/linux/generic/syscalls.list
sysdeps/unix/sysv/linux/hppa/syscalls.list
sysdeps/unix/sysv/linux/ia64/syscalls.list
sysdeps/unix/sysv/linux/microblaze/syscalls.list
sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
sysdeps/unix/sysv/linux/semop.c
sysdeps/unix/sysv/linux/x86_64/syscalls.list

index f4de0e318a7d5e6c3258353d643529400a1d4fcd..76ad37da1e78666022c9ee1f5afcd3edf7f7aee7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,19 @@
 2016-12-28  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+       * sysdeps/unix/sysv/linux/alpha/syscalls.list (semop): Remove.
+       * sysdeps/unix/sysv/linux/arm/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/generic/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/hppa/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/ia64/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/microblaze/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (semop):
+       Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semop):
+       Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semop): Likewise.
+       * sysdeps/unix/sysv/linux/semop.c (semop): Use semop syscall if it is
+       defined.
+
        * sysdeps/unix/sysv/linux/alpha/syscalls.list (semget): Remove.
        * sysdeps/unix/sysv/linux/arm/syscalls.list (semget): Likewise.
        * sysdeps/unix/sysv/linux/generic/syscalls.list (semget): Likewise.
index 2533263114b510a0bddeb89b8a7c39b6f2e67534..c20543a6ad420818344c2ada81b9a4352ff49c06 100644 (file)
@@ -4,7 +4,6 @@ shmat           -       osf_shmat       i:ipi   __shmat         shmat
 oldshmctl      EXTRA   shmctl          i:iip   __old_shmctl    shmctl@GLIBC_2.0
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop     -       semtimedop      i:ipip  semtimedop
 
 sigstack       -       sigstack        2       sigstack
index ef5bd0152c580217aa0f59a9f4d5f21873c179d3..3014db836bfac9ad58dd4d50a5d166b1bf2aaaf0 100644 (file)
@@ -26,7 +26,6 @@ personality   EXTRA   personality     Ei:i    __personality   personality
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop     -       semtimedop      i:ipip  semtimedop
 
 # proper socket implementations:
index 485f6fe4c87dfd1838f89a2e8451bf6c4d003885..54e17787482c5c1378d7408dfce66b676c2367e5 100644 (file)
@@ -2,7 +2,6 @@
 
 # SysV APIs
 semtimedop     -       semtimedop      i:ipip  semtimedop
-semop          -       semop           i:ipi   __semop         semop
 shmget         -       shmget          i:iii   __shmget        shmget
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmat          -       shmat           i:ipi   __shmat         shmat
index 685ab93a4fd91500bc29f847e3e5a14b2afde225..8fbcabaa65aafd183a753d1269ec175b41e11de8 100644 (file)
@@ -5,7 +5,6 @@ shmat           -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop      -       semtimedop      i:ipip  semtimedop
 
 # proper socket implementations:
index 56200ba2d2ccbc7897df644db9e6c7c58069eaa5..b9271cc545e861c1d9e84170ce9e332b812d0b69 100644 (file)
@@ -9,7 +9,6 @@ shmat           -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop     -       semtimedop      i:ipip  semtimedop
 
 # proper socket implementations:
index a0b8ebf14872a2a0f0b84c16342f925351b11397..3da653dc70aea109192f9a1b2a07373e17e9e04c 100644 (file)
@@ -11,5 +11,4 @@ personality   EXTRA   personality     Ei:i    __personality   personality
 shmat           -       shmat           i:ipi   __shmat         shmat
 shmdt           -       shmdt           i:s     __shmdt         shmdt
 shmget          -       shmget          i:iii   __shmget        shmget
-semop           -       semop           i:ipi   __semop         semop
 semtimedop      -       semtimedop      i:ipip  semtimedop
index 374fcc221334207ae3ebb7543805e73da8085b15..720db96d59e90d429ce17ee42df6489133b36bf7 100644 (file)
@@ -5,5 +5,4 @@
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop     -       semtimedop      i:ipip  semtimedop
index 288e0808d85d364cc34be12030536141f03f3795..924d182d69a35949f2d20ca253b106689e64eacb 100644 (file)
@@ -5,4 +5,3 @@ shmat           -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
index 593eb4ce85df7aca22e34f8fd7228bdc4659ceb6..c179fccece88a2c0bc5fd651909a19d99b22d880 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
 #include <sys/sem.h>
 #include <ipc_priv.h>
-
 #include <sysdep.h>
-#include <sys/syscall.h>
+#include <errno.h>
 
 /* Perform user-defined atomical operation of array of semaphores.  */
 
 int
 semop (int semid, struct sembuf *sops, size_t nsops)
 {
-  return INLINE_SYSCALL (ipc, 5, IPCOP_semop, semid, (int) nsops, 0, sops);
+#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+  return INLINE_SYSCALL_CALL (semop, semid, sops, nsops);
+#else
+  return INLINE_SYSCALL_CALL (ipc, IPCOP_semop, semid, nsops, 0, sops);
+#endif
 }
index d77a7ca5895d509dbbda77f2585174424a805b0b..d17a1869aa1df6223f28a88c6b45742c0cdf48dc 100644 (file)
@@ -10,7 +10,6 @@ shmat         -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
-semop          -       semop           i:ipi   __semop         semop
 semtimedop     -       semtimedop      i:ipip  semtimedop
 syscall_clock_gettime  EXTRA   clock_gettime   Ei:ip           __syscall_clock_gettime
 
This page took 0.172384 seconds and 5 git commands to generate.