From 40c0a780687b3387e02caadc8545b21347cffc7e Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Wed, 26 Oct 2016 16:55:39 -0200 Subject: Consolidate Linux semctl implementation This patch consolidates the semctl Linux implementation in only one default file, sysdeps/unix/sysv/linux/semctl.c. If tries to use the direct syscall if it is supported, otherwise will use the old ipc multiplex mechanism. The patch also simplify header inclusion and reorganize internal compat symbol to be built only if old ipc is defined. Checked on x86_64, i686, powerpc64le, aarch64, and armhf. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdeps_routines): Remove oldsemctl. * sysdeps/unix/sysv/linux/alpha/semctl.c: Remove file. * sysdeps/unix/sysv/linux/arm/semctl.c: Likewise. * sysdeps/unix/sysv/linux/microblaze/semctl.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/semctl.c: Use defaulf implementation. * sysdeps/unix/sysv/linux/semctl.c (__new_semctl): Use semctl syscall if it is defined. * sysdeps/unix/sysv/linux/generic/syscalls.list (semctl): Remove. * sysdeps/unix/sysv/linux/alpha/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/hppa/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/ia64/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (semctl): Likewise. * sysdeps/unix/sysv/linux/x86_64/syscalls.list (semctl): Likewise. --- sysdeps/unix/sysv/linux/mips/mips64/semctl.c | 38 ++++------------------------ 1 file changed, 5 insertions(+), 33 deletions(-) (limited to 'sysdeps/unix/sysv/linux/mips') diff --git a/sysdeps/unix/sysv/linux/mips/mips64/semctl.c b/sysdeps/unix/sysv/linux/mips/mips64/semctl.c index 1115a25..5a0c2a3 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/semctl.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/semctl.c @@ -15,39 +15,11 @@ License along with the GNU C Library. If not, see . */ -#include -#include -#include -#include -#include - -/* Define a `union semun' suitable for Linux here. */ -union semun -{ - int val; /* value for SETVAL */ - struct semid_ds *buf; /* buffer for IPC_STAT & IPC_SET */ - unsigned short int *array; /* array for GETALL & SETALL */ - struct seminfo *__buf; /* buffer for IPC_INFO */ -}; - -int __semctl (int semid, int semnum, int cmd, ...); - -int -__semctl (int semid, int semnum, int cmd, ...) -{ - union semun arg; - va_list ap; - - va_start (ap, cmd); - - /* Get the argument. */ - arg = va_arg (ap, union semun); +#include - va_end (ap); +#undef SHLIB_COMPAT +#define SHLIB_COMPAT(a, b, c) 0 - return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64, - arg.array); -} +#define DEFAULT_VERSION GLIBC_2_0 -#include -versioned_symbol (libc, __semctl, semctl, GLIBC_2_0); +#include -- cgit v1.1