#include #include #include #include int sem_init(sem_t* sem, int pshared, unsigned value) { if (pshared) { errno = ENOSYS; return -1; } if (value > SEM_VALUE_MAX) { errno = EINVAL; return -1; } atomic_store(&sem->_s_value, value); atomic_store(&sem->_s_waiters, 0); return 0; }