From 266ae826f8660d485daba069a921ec1ebc68a46d Mon Sep 17 00:00:00 2001 From: Joakim Tjernlund Date: Sun, 24 Apr 2005 19:29:39 +0000 Subject: Fix bug 222: Move all archs to newer __IPC_64 interface for {msg,sem,shm}ctl syscalls. This won't work on 2.2 kernels(I think). --- libc/misc/sysvipc/ipc.h | 2 ++ libc/misc/sysvipc/msgq.c | 4 ++-- libc/misc/sysvipc/sem.c | 4 ++-- libc/misc/sysvipc/shm.c | 4 ++-- 4 files changed, 8 insertions(+), 6 deletions(-) (limited to 'libc/misc/sysvipc') diff --git a/libc/misc/sysvipc/ipc.h b/libc/misc/sysvipc/ipc.h index 741b720bc..e1b94ad12 100644 --- a/libc/misc/sysvipc/ipc.h +++ b/libc/misc/sysvipc/ipc.h @@ -4,6 +4,8 @@ #ifdef __NR_ipc +#define __IPC_64 0x100 + /* The actual system call: all functions are multiplexed by this. */ extern int __syscall_ipc __P((int __call, int __first, int __second, int __third, void *__ptr)); diff --git a/libc/misc/sysvipc/msgq.c b/libc/misc/sysvipc/msgq.c index d4f48e7ad..411ea3ea4 100644 --- a/libc/misc/sysvipc/msgq.c +++ b/libc/misc/sysvipc/msgq.c @@ -6,12 +6,12 @@ #ifdef L_msgctl #ifdef __NR_msgctl -_syscall3(int, msgctl, int, msqid, int, cmd, struct msqid_ds *, buf); +_syscall3(int, msgctl, int, msqid, int, cmd | __IPC_64, struct msqid_ds *, buf); #else /* Message queue control operation. */ int msgctl (int msqid, int cmd, struct msqid_ds *buf) { - return __syscall_ipc(IPCOP_msgctl ,msqid ,cmd ,0 ,buf); + return __syscall_ipc(IPCOP_msgctl ,msqid ,cmd | __IPC_64 ,0 ,buf); } #endif #endif diff --git a/libc/misc/sysvipc/sem.c b/libc/misc/sysvipc/sem.c index 8c9672bad..ccbe25b46 100644 --- a/libc/misc/sysvipc/sem.c +++ b/libc/misc/sysvipc/sem.c @@ -51,9 +51,9 @@ int semctl(int semid, int semnum, int cmd, ...) arg = va_arg (ap, union semun); va_end (ap); #ifdef __NR_semctl - return __semctl(semid, semnum, cmd, arg.__pad); + return __semctl(semid, semnum, cmd | __IPC_64, arg.__pad); #else - return __syscall_ipc(IPCOP_semctl, semid, semnum, cmd, &arg); + return __syscall_ipc(IPCOP_semctl, semid, semnum, cmd | __IPC_64, &arg); #endif } #endif diff --git a/libc/misc/sysvipc/shm.c b/libc/misc/sysvipc/shm.c index 8193ac2f0..d21d9f54b 100644 --- a/libc/misc/sysvipc/shm.c +++ b/libc/misc/sysvipc/shm.c @@ -48,11 +48,11 @@ void * shmat (int shmid, const void *shmaddr, int shmflg) #ifdef L_shmctl /* Provide operations to control over shared memory segments. */ #ifdef __NR_shmctl -_syscall3(int, shmctl, int, shmid, int, cmd, struct shmid_ds *, buf); +_syscall3(int, shmctl, int, shmid, int, cmd | __IPC_64, struct shmid_ds *, buf); #else int shmctl (int shmid, int cmd, struct shmid_ds *buf) { - return __syscall_ipc(IPCOP_shmctl, shmid, cmd, 0, buf); + return __syscall_ipc(IPCOP_shmctl, shmid, cmd | __IPC_64 , 0, buf); } #endif #endif -- cgit v1.2.3