fix broken semctl on systems that don't use IPC_64 flag
[musl] / src / ipc / semctl.c
index df05ec7..9de5b1d 100644 (file)
@@ -3,6 +3,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
+#ifndef IPC_64
+#define IPC_64 0
+#endif
+
 int semctl(int id, int num, int cmd, ...)
 {
        long arg;
@@ -11,8 +15,8 @@ int semctl(int id, int num, int cmd, ...)
        arg = va_arg(ap, long);
        va_end(ap);
 #ifdef SYS_semctl
-       return syscall(SYS_semctl, id, num, cmd, arg);
+       return syscall(SYS_semctl, id, num, cmd | IPC_64, arg);
 #else
-       return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | 0x100, &arg);
+       return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg);
 #endif
 }