mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-24 17:51:17 +03:00
Update sysvipc kernel-features.h files for Linux 5.1
Linux 5.1 adds missing SySV IPC syscalls to the syscall table for
remanining one that still uses the ipc syscall on glibc (m68k, mips-o32,
powerpc, s390, sh, and sparc32). However the newly added direct ipc
syscall are different than the old ones:
1. They do not expect IPC_64, meaning __IPC_64 should be set to zero
when new syscalls are used. And new syscalls can not be used
for compat functions like __old_semctl (to emulated old sysvipc it
requires to use the old __NR_ipc syscall without __IPC_64).
Thus IPC_64 is redefined for newer kernels on affected ABIs.
2. semtimedop and semop does not exist on 32-bit ABIs (only
semtimedop_time64 is supplied). The provided syscall wrappers only
uses the wire-up syscall if __NR_semtimedop and __NR_semop are
also defined.
Checked on x86_64-linux-gnu and i686-linux-gnu on both a 4.15 kernel
configure with default options and sysvipc tests on a 5.3.0 kernel with
--enable-kernel=5.1.
Tested-by: Paul A. Clarke <pc@us.ibm.com>
This commit is contained in:
@@ -27,7 +27,9 @@ int
|
||||
__semtimedop (int semid, struct sembuf *sops, size_t nsops,
|
||||
const struct timespec *timeout)
|
||||
{
|
||||
#ifdef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
|
||||
/* semtimedop wire-up syscall is not exported for 32-bit ABIs (they have
|
||||
semtimedop_time64 instead with uses a 64-bit time_t). */
|
||||
#if defined __ASSUME_DIRECT_SYSVIPC_SYSCALLS && defined __NR_semtimedop
|
||||
return INLINE_SYSCALL_CALL (semtimedop, semid, sops, nsops, timeout);
|
||||
#else
|
||||
return INLINE_SYSCALL_CALL (ipc, IPCOP_semtimedop, semid,
|
||||
|
||||
Reference in New Issue
Block a user