semctl.c 405 B

12345678910111213141516171819202122
  1. #include <sys/sem.h>
  2. #include <stdarg.h>
  3. #include "syscall.h"
  4. #include "ipc.h"
  5. #ifndef IPC_64
  6. #define IPC_64 0
  7. #endif
  8. int semctl(int id, int num, int cmd, ...)
  9. {
  10. long arg;
  11. va_list ap;
  12. va_start(ap, cmd);
  13. arg = va_arg(ap, long);
  14. va_end(ap);
  15. #ifdef SYS_semctl
  16. return syscall(SYS_semctl, id, num, cmd | IPC_64, arg);
  17. #else
  18. return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg);
  19. #endif
  20. }