kernel: Remove {msg,sem,shm}sys() syscalls.
[dragonfly.git] / lib / libc / gen / sysvipc_semctl.c
1 #include <sys/types.h>
2 #include <sys/ipc.h>
3 #include <sys/sem.h>
4 #include <stdarg.h>
5
6 #include "sysvipc_sem.h"
7
8 extern char sysvipc_userland;
9 extern int __sys___semctl(int, int, int, union semun *);
10
11 int
12 semctl(int semid, int semnum, int cmd, ...)
13 {
14         va_list ap;
15         union semun semun = { 0 };
16         union semun *semun_ptr = NULL;
17
18         va_start(ap, cmd);
19         if (cmd == IPC_SET || cmd == IPC_STAT || cmd == GETALL
20             || cmd == SETVAL || cmd == SETALL) {
21                 semun = va_arg(ap, union semun);
22                 semun_ptr = &semun;
23         }
24         va_end(ap);
25
26         if (sysvipc_userland)
27                 return (sysvipc___semctl(semid, semnum, cmd, semun_ptr));
28         return (__sys___semctl(semid, semnum, cmd, semun_ptr));
29 }