From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org
Subject: [PATCH 10/17] Use semop syscall for Linux implementation
Date: Tue, 27 Dec 2016 14:02:00 -0000 [thread overview]
Message-ID: <1482847286-29933-11-git-send-email-adhemerval.zanella@linaro.org> (raw)
In-Reply-To: <1482847286-29933-1-git-send-email-adhemerval.zanella@linaro.org>
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 | 14 ++++++++++++++
sysdeps/unix/sysv/linux/alpha/syscalls.list | 1 -
sysdeps/unix/sysv/linux/arm/syscalls.list | 1 -
sysdeps/unix/sysv/linux/generic/syscalls.list | 1 -
sysdeps/unix/sysv/linux/hppa/syscalls.list | 1 -
sysdeps/unix/sysv/linux/ia64/syscalls.list | 1 -
sysdeps/unix/sysv/linux/microblaze/syscalls.list | 1 -
sysdeps/unix/sysv/linux/mips/mips64/syscalls.list | 1 -
sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list | 1 -
sysdeps/unix/sysv/linux/semop.c | 10 ++++++----
sysdeps/unix/sysv/linux/x86_64/syscalls.list | 1 -
11 files changed, 20 insertions(+), 13 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index 2533263..c20543a 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -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
diff --git a/sysdeps/unix/sysv/linux/arm/syscalls.list b/sysdeps/unix/sysv/linux/arm/syscalls.list
index ef5bd01..3014db8 100644
--- a/sysdeps/unix/sysv/linux/arm/syscalls.list
+++ b/sysdeps/unix/sysv/linux/arm/syscalls.list
@@ -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:
diff --git a/sysdeps/unix/sysv/linux/generic/syscalls.list b/sysdeps/unix/sysv/linux/generic/syscalls.list
index 485f6fe..54e1778 100644
--- a/sysdeps/unix/sysv/linux/generic/syscalls.list
+++ b/sysdeps/unix/sysv/linux/generic/syscalls.list
@@ -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
diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list
index 685ab93..8fbcaba 100644
--- a/sysdeps/unix/sysv/linux/hppa/syscalls.list
+++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list
@@ -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:
diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list
index 56200ba..b9271cc 100644
--- a/sysdeps/unix/sysv/linux/ia64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list
@@ -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:
diff --git a/sysdeps/unix/sysv/linux/microblaze/syscalls.list b/sysdeps/unix/sysv/linux/microblaze/syscalls.list
index a0b8ebf..3da653d 100644
--- a/sysdeps/unix/sysv/linux/microblaze/syscalls.list
+++ b/sysdeps/unix/sysv/linux/microblaze/syscalls.list
@@ -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
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
index 374fcc2..720db96 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/mips64/syscalls.list
@@ -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
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index 288e080..924d182 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -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
diff --git a/sysdeps/unix/sysv/linux/semop.c b/sysdeps/unix/sysv/linux/semop.c
index 593eb4c..c179fcc 100644
--- a/sysdeps/unix/sysv/linux/semop.c
+++ b/sysdeps/unix/sysv/linux/semop.c
@@ -16,17 +16,19 @@
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
}
diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
index d77a7ca..d17a186 100644
--- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
@@ -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
--
2.7.4
next prev parent reply other threads:[~2016-12-27 14:02 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-27 14:02 [PATCH v5 00/17] Consolidate Linux sysvipc implementation Adhemerval Zanella
2016-12-27 14:01 ` [PATCH 01/17] Add __ASSUME_DIRECT_SYSVIPC_SYSCALL for Linux Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 04/17] Consolidate Linux msgrcv implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 07/17] Add SYSV message queue test Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 03/17] Consolidate Linux msgctl implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 05/17] Use msgsnd syscall for Linux implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 14/17] Consolidate Linux shmctl implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 11/17] Consolidate Linux semtimedop implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 13/17] Use shmat syscall for Linux implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 09/17] Use semget " Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 06/17] Use msgget " Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 12/17] Add SYSV semaphore test Adhemerval Zanella
2016-12-30 20:44 ` [PATCH] Fix argument passing in sysvipc/test-sysvsem Tulio Magno Quites Machado Filho
2016-12-31 9:07 ` Florian Weimer
2016-12-31 16:05 ` Zack Weinberg
2017-01-02 16:47 ` Florian Weimer
2017-01-02 18:14 ` Tulio Magno Quites Machado Filho
2017-01-02 18:24 ` Florian Weimer
2017-01-02 16:45 ` Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 15/17] Use shmdt syscall for linux implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 02/17] Refactor Linux ipc_priv header Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 16/17] Use shmget syscall for linux implementation Adhemerval Zanella
2016-12-27 14:02 ` [PATCH 17/17] Add SYSV shared memory test Adhemerval Zanella
2016-12-27 14:02 ` Adhemerval Zanella [this message]
2016-12-27 14:02 ` [PATCH 08/17] Consolidate Linux semctl implementation Adhemerval Zanella
[not found] <1481545990-7247-1-git-send-email-adhemerval.zanella@linaro.org>
2016-12-12 12:33 ` [PATCH 10/17] Use semop syscall for Linux implementation Adhemerval Zanella
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1482847286-29933-11-git-send-email-adhemerval.zanella@linaro.org \
--to=adhemerval.zanella@linaro.org \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).