X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fipc%2Fsemctl.c;h=3d79f5030811e59a50a5eda8dc3cd8b6ae46731c;hb=7acbbdfd5d6e264dcf8efa13188f0c8edabee047;hp=7ada116bf5d90436c01d22eeb3f0ec477c7f0769;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/ipc/semctl.c b/src/ipc/semctl.c index 7ada116b..3d79f503 100644 --- a/src/ipc/semctl.c +++ b/src/ipc/semctl.c @@ -3,16 +3,22 @@ #include "syscall.h" #include "ipc.h" +union semun { + int val; + struct semid_ds *buf; + unsigned short *array; +}; + int semctl(int id, int num, int cmd, ...) { - long arg; + union semun arg; va_list ap; va_start(ap, cmd); - arg = va_arg(ap, long); + arg = va_arg(ap, union semun); va_end(ap); -#ifdef __NR_semctl - return syscall4(__NR_semctl, id, num, cmd, arg); +#ifdef SYS_semctl + return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf); #else - return syscall5(__NR_ipc, IPCOP_semctl, id, num, cmd | 0x100, (long)&arg); + return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf); #endif }