]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use shmdt syscall for linux implementation
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 26 Oct 2016 20:23:11 +0000 (18:23 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 28 Dec 2016 22:31:05 +0000 (20:31 -0200)
this patch add a direct call to shmdt syscall if it is supported by
kernel features.

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

* sysdeps/unix/sysv/linux/alpha/syscalls.list (shmdt): Remove.
* sysdeps/unix/sysv/linux/arm/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/generic/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/hppa/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/ia64/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmdt):
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmdt):
Likewise.
* sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmdt): Likewise.
* sysdeps/unix/sysv/linux/shmdt.c (shmdt): Use shmdt 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/shmdt.c
sysdeps/unix/sysv/linux/x86_64/syscalls.list

index 9205c82e296f8b39b19b10090da527bffb559f53..d6505cd9643356393f7eaf188947ad795ec52f01 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 (shmdt): Remove.
+       * sysdeps/unix/sysv/linux/arm/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/generic/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/hppa/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/ia64/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/microblaze/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (shmdt):
+       Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (shmdt):
+       Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/syscalls.list (shmdt): Likewise.
+       * sysdeps/unix/sysv/linux/shmdt.c (shmdt): Use shmdt syscall if it is
+       defined.
+
        * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Remove
        oldshmctl.
        * sysdeps/unix/sysv/linux/alpha/syscalls.list (shmctl): Remove.
index bf9c8ad70c07e0c309e930d5fbeb4a18c3603aa7..096bf229cc87c795adbe4c45b9e1e6784a4c0586 100644 (file)
@@ -1,6 +1,5 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
 
 sigstack       -       sigstack        2       sigstack
index f50a5cf6bff4f4a1e1fbb42bb9d0336717021c0f..b1ea6641f3e638c41152056eaf465d798e07ccd2 100644 (file)
@@ -23,7 +23,6 @@ personality   EXTRA   personality     Ei:i    __personality   personality
 
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
 
 # proper socket implementations:
index 80244c4cfbd3e4d27b138514e79b21fff7dccc5f..51ce1481590b4011b709e545aa77aa12983d5b23 100644 (file)
@@ -2,7 +2,6 @@
 
 # SysV APIs
 shmget         -       shmget          i:iii   __shmget        shmget
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 
 # Socket APIs
 socket         -       socket          i:iii   __socket        socket
index d755bfd02ec6e7439f1c40efdcce915c1c86df7f..e75dd43566e81398a7967751ea980dcf3eaae406 100644 (file)
@@ -1,7 +1,6 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
 # semaphore and shm system calls
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
 
 # proper socket implementations:
index 90bd870dcf461e35fb86b3693cbbcee7d17945dd..5ebade11212b3dea22d0725a0d981c090477479c 100644 (file)
@@ -5,7 +5,6 @@ umount2         -       umount          2       __umount2       umount2
 getpriority    -       getpriority     i:ii    __getpriority   getpriority
 
 # semaphore and shm system calls
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
 
 # proper socket implementations:
index 8b844f2f7620c4bdcdc91614220c1ef8eb64b89d..7a5666f2705be07c268c353ed7aa966139218e78 100644 (file)
@@ -8,5 +8,4 @@ personality     EXTRA   personality     Ei:i    __personality   personality
 
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
-shmdt           -       shmdt           i:s     __shmdt         shmdt
 shmget          -       shmget          i:iii   __shmget        shmget
index e93c87a5efe94f9a6611c1359640f9bd7689faef..e8e381bde38fd25b59f4e5d4dda84ecefecb5be9 100644 (file)
@@ -2,5 +2,4 @@
 
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
index 4d478ce38cc7ab82c08b4a49fac23d7312ed6a20..0ccbffa47d173bc2dab39afc0442332fbaa540f0 100644 (file)
@@ -1,5 +1,4 @@
 # File name     Caller  Syscall name    # args  Strong name     Weak names
 
 # semaphore and shm system calls
-shmdt           -       shmdt           i:s     __shmdt         shmdt
 shmget          -       shmget          i:iii   __shmget        shmget
index 7224d6fc1767e87f86140808506e823032b0a529..5f3363e39702bc4be3f442a3f7e0c74d3d888c57 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
-#include <sys/shm.h>
+#include <sys/msg.h>
 #include <ipc_priv.h>
-
 #include <sysdep.h>
-#include <sys/syscall.h>
+#include <errno.h>
 
 /* Detach shared memory segment starting at address specified by SHMADDR
    from the caller's data segment.  */
@@ -29,5 +27,9 @@
 int
 shmdt (const void *shmaddr)
 {
-  return INLINE_SYSCALL (ipc, 5, IPCOP_shmdt, 0, 0, 0, (void *) shmaddr);
+#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+  return INLINE_SYSCALL_CALL (shmdt, shmaddr);
+#else
+  return INLINE_SYSCALL_CALL (ipc, IPCOP_shmdt, 0, 0, 0, shmaddr);
+#endif
 }
index 18bd588b4c7a1ef48c43f1d15d0f92e6d061473b..cb1a9f97f883dd8037927190d5217f9c57cb9708 100644 (file)
@@ -6,7 +6,6 @@ pread64         -       pread64         Ci:ipii __libc_pread    __libc_pread64 __pread64 pread64 __prea
 preadv64       -       preadv          Ci:ipii preadv64        preadv
 pwrite64       -       pwrite64        Ci:ipii __libc_pwrite   __libc_pwrite64 __pwrite64 pwrite64 __pwrite pwrite
 pwritev64      -       pwritev         Ci:ipii pwritev64       pwritev
-shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
 syscall_clock_gettime  EXTRA   clock_gettime   Ei:ip           __syscall_clock_gettime