diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-10-26 16:55:39 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-12-28 20:31:04 -0200 |
commit | 40c0a780687b3387e02caadc8545b21347cffc7e (patch) | |
tree | f224f19b04a41e7b645ce78a2e44d09315a972b9 /sysdeps/unix/sysv/linux/mips | |
parent | 59c900c54b8db3638bc5e9e90784552aab4e2df4 (diff) | |
download | glibc-40c0a780687b3387e02caadc8545b21347cffc7e.tar glibc-40c0a780687b3387e02caadc8545b21347cffc7e.tar.gz glibc-40c0a780687b3387e02caadc8545b21347cffc7e.tar.bz2 glibc-40c0a780687b3387e02caadc8545b21347cffc7e.zip |
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.
Diffstat (limited to 'sysdeps/unix/sysv/linux/mips')
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/mips64/semctl.c | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/semctl.c b/sysdeps/unix/sysv/linux/mips/mips64/semctl.c index 1115a25a51..5a0c2a3dd3 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 <http://www.gnu.org/licenses/>. */ -#include <errno.h> -#include <stdarg.h> -#include <sys/sem.h> -#include <ipc_priv.h> -#include <sysdep.h> - -/* 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 <shlib-compat.h> - 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 <shlib-compat.h> -versioned_symbol (libc, __semctl, semctl, GLIBC_2_0); +#include <sysdeps/unix/sysv/linux/semctl.c> |