mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 05:50:14 +00:00
sysvipc: Implement semop based on semtimedop
Besides semop being a subset of semtimedop, new 32-bit architectures on Linux are not expected to provide the syscall (only the 64-bit time semtimedop). Also, Linux 5.1 only wired-up semtimedop for the 64-bit architectures that missed it (powerpc, s390, and sparc). This simplifies the code to support it. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
This commit is contained in:
parent
06436acf81
commit
765cdd0bff
@ -1 +1,9 @@
|
||||
#ifndef _SYS_SEM_H
|
||||
# include <sysvipc/sys/sem.h>
|
||||
|
||||
# ifndef _ISOMAC
|
||||
|
||||
__typeof__ (semtimedop) __semtimedop attribute_hidden;
|
||||
|
||||
# endif
|
||||
#endif
|
||||
|
@ -26,9 +26,5 @@
|
||||
int
|
||||
semop (int semid, struct sembuf *sops, size_t nsops)
|
||||
{
|
||||
#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
|
||||
return __semtimedop (semid, sops, nsops, NULL);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
/* Perform user-defined atomical operation of array of semaphores. */
|
||||
|
||||
int
|
||||
semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
__semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
const struct timespec *timeout)
|
||||
{
|
||||
#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
|
||||
@ -34,3 +34,4 @@ semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
SEMTIMEDOP_IPC_ARGS (nsops, sops, timeout));
|
||||
#endif
|
||||
}
|
||||
weak_alias (__semtimedop, semtimedop)
|
||||
|
@ -22,11 +22,13 @@
|
||||
/* Perform user-defined atomical operation of array of semaphores. */
|
||||
|
||||
int
|
||||
semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
__semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
const struct timespec *timeout)
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
weak_alias (__semtimedop, semtimedop)
|
||||
libc_hidden_def (__semtimedop)
|
||||
|
||||
stub_warning (semtimedop)
|
||||
|
Loading…
Reference in New Issue
Block a user