]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Use msgsnd syscall for Linux implementation
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 25 Oct 2016 22:57:55 +0000 (20:57 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 28 Dec 2016 22:28:56 +0000 (20:28 -0200)
This patch add a direct call to msgsnd syscall if it is supported by
kernel features.

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

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

index d1dda4d9be4267f85213c0a2d4f1f02c4d29d2b9..b494042a2b2db73f5c735de4696a965c349ba2a9 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 (msgsnd): Remove.
+       * sysdeps/unix/sysv/linux/arm/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/generic/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/hppa/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/ia64/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/microblaze/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/mips/mips64/syscalls.list (msgsnd):
+       Likewise.
+       * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (msgsnd):
+       Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/syscalls.list (msgsnd): Likewise.
+       * sysdeps/unix/sysv/linux/msgsnd.c (__libc_msgsnd): Use msgsnd syscall
+       if defined.
+
        * sysdeps/unix/sysv/linux/alpha/syscalls.list (msgctl): Remove.
        * sysdeps/unix/sysv/linux/arm/syscalls.list (msgctl): Likewise.
        * sysdeps/unix/sysv/linux/generic/syscalls.list (msgctl): Likewise.
index ddbd67282debf0113e72c794531a5cc227db31db..ced9c108fc0d4bddae280429c801bb43c1461846 100644 (file)
@@ -1,7 +1,6 @@
 # File name    Caller  Syscall name    # args  Strong name     Weak names
 
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       osf_shmat       i:ipi   __shmat         shmat
 oldshmctl      EXTRA   shmctl          i:iip   __old_shmctl    shmctl@GLIBC_2.0
 shmdt          -       shmdt           i:s     __shmdt         shmdt
index 297f7e78122649325eb0d36ae44a457404911c2c..43c464d29847a7f640d6e3337153043b87db57a1 100644 (file)
@@ -24,7 +24,6 @@ personality   EXTRA   personality     Ei:i    __personality   personality
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
index 6869a484ba9175398f2bc6c6a63bf4c9e042cb7d..f65598aea04cb7a937f8e9c89bd55aef8e275ab8 100644 (file)
@@ -2,7 +2,6 @@
 
 # SysV APIs
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 semget         -       semget          i:iii   __semget        semget
 semctl         -       semctl          i:iiii  __semctl        semctl
 semtimedop     -       semtimedop      i:ipip  semtimedop
index e4e40a0df18ceb0449313dcc8a3a7934c3eaad1d..3fbd81a8cd30ec0ad168426f255ea2cd543d75c2 100644 (file)
@@ -2,7 +2,6 @@
 
 # semaphore and shm system calls
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
index a60e615566e1a0accdf6207df8b6640387c5e8b6..9edcbe62e6d5c97d23520ebad087345b88da738e 100644 (file)
@@ -6,7 +6,6 @@ getpriority     -       getpriority     i:ii    __getpriority   getpriority
 
 # semaphore and shm system calls
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
index 99dc33b9768db833d3ed06e5a8121995dc464614..ed715bac91e0c1c5ca1e482d77a851096272a372 100644 (file)
@@ -9,7 +9,6 @@ personality     EXTRA   personality     Ei:i    __personality   personality
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
 msgget          -       msgget          i:ii    __msgget        msgget
-msgsnd          -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat           -       shmat           i:ipi   __shmat         shmat
 shmdt           -       shmdt           i:s     __shmdt         shmdt
 shmget          -       shmget          i:iii   __shmget        shmget
index 07b421de27af96954f6ffca0eef40e07a4b9c5e5..4c59a33fa399fdb1eaac0818e0c9925af6e29f88 100644 (file)
@@ -3,7 +3,6 @@
 # Semaphore and shm system calls.  msgctl, shmctl, and semctl have C
 # wrappers (to set __IPC_64).
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmdt          -       shmdt           i:s     __shmdt         shmdt
 shmget         -       shmget          i:iii   __shmget        shmget
index 1457e434a035f7da61beb134870d08c61c741425..53cf3c1de0c1bd2f1d16f8e36f70e40730000575 100644 (file)
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
 #include <sys/msg.h>
 #include <ipc_priv.h>
-
 #include <sysdep-cancel.h>
-#include <sys/syscall.h>
 
 int
 __libc_msgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg)
 {
+#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+  return SYSCALL_CANCEL (msgsnd, msqid, msgp, msgsz, msgflg);
+#else
   return SYSCALL_CANCEL (ipc, IPCOP_msgsnd, msqid, msgsz, msgflg,
-                        (void *) msgp);
+                        msgp);
+#endif
 }
 weak_alias (__libc_msgsnd, msgsnd)
index 59b93fefe4594d879ca9e370bec0eaa9fe1862ba..259bdfc961ba81f1a67ccdf2176a90d1537869f1 100644 (file)
@@ -2,7 +2,6 @@
 
 # semaphore and shm system calls
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 shmat          -       shmat           i:ipi   __shmat         shmat
 shmctl         -       shmctl          i:iip   __shmctl        shmctl
 shmdt          -       shmdt           i:s     __shmdt         shmdt
index 7192a96c877bcbc7467a27b0fc97d2c21f17a4cf..2d46bb36d03ffdc1396b2b4d713539751f690d4a 100644 (file)
@@ -3,7 +3,6 @@
 arch_prctl     EXTRA   arch_prctl      i:ii    __arch_prctl    arch_prctl
 modify_ldt     EXTRA   modify_ldt      i:ipi   __modify_ldt    modify_ldt
 msgget         -       msgget          i:ii    __msgget        msgget
-msgsnd         -       msgsnd          Ci:ibni __msgsnd        msgsnd
 pread64                -       pread64         Ci:ipii __libc_pread    __libc_pread64 __pread64 pread64 __pread pread
 preadv64       -       preadv          Ci:ipii preadv64        preadv
 pwrite64       -       pwrite64        Ci:ipii __libc_pwrite   __libc_pwrite64 __pwrite64 pwrite64 __pwrite pwrite