fix support for initialized TLS in static PIE binaries
[musl.git] / src / ipc / semctl.c
blob673a9a8c996b2bd18657b1dff7f6934ec34b2d69
1 #include <sys/sem.h>
2 #include <stdarg.h>
3 #include "syscall.h"
4 #include "ipc.h"
6 union semun {
7 int val;
8 struct semid_ds *buf;
9 unsigned short *array;
12 int semctl(int id, int num, int cmd, ...)
14 union semun arg = {0};
15 va_list ap;
16 switch (cmd) {
17 case SETVAL: case GETALL: case SETALL: case IPC_STAT: case IPC_SET:
18 case IPC_INFO: case SEM_INFO: case SEM_STAT:
19 va_start(ap, cmd);
20 arg = va_arg(ap, union semun);
21 va_end(ap);
23 #ifdef SYS_semctl
24 return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf);
25 #else
26 return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf);
27 #endif