-void
-xbt_os_sem_close(xbt_os_sem_t sem)
-{
- if(!sem)
- THROW1(arg_error,EINVAL,"xbt_os_sem_close() failed: %s",
- strerror(EINVAL));
-
- if(sem_close(&(sem->s)) < 0)
- THROW1(system_error,errno,"sem_close() failed: %s",
- strerror(errno));
-}
-
-xbt_os_sem_t
-xbt_os_sem_open(const char *name, int oflag, mode_t mode, unsigned int value)
-{
- sem_t* ps;
- xbt_os_sem_t res = xbt_new(s_xbt_os_sem_t,1);
-
- if(SEM_FAILED == (ps = sem_open(name,oflag, mode, value)))
- THROW1(system_error,errno,"sem_open() failed: %s",
- strerror(errno));
-
- res->s = *ps;
- res->value = value;
-
- return res;
-}
-