int sem_init(sem_t *sem, int pshared, unsigned int value)
{
if (value > SEM_VALUE_MAX) {
- errno = EINVAL;
+ __set_errno(EINVAL);
return -1;
}
if (pshared) {
- errno = ENOSYS;
+ __set_errno(ENOSYS);
return -1;
}
__pthread_init_lock(&sem->__sem_lock);
__pthread_lock(&sem->__sem_lock, NULL);
if (sem->__sem_value == 0) {
- errno = EAGAIN;
+ __set_errno(EAGAIN);
retval = -1;
} else {
sem->__sem_value--;
if (sem->__sem_waiting == NULL) {
if (sem->__sem_value >= SEM_VALUE_MAX) {
/* Overflow */
- errno = ERANGE;
+ __set_errno(ERANGE);
__pthread_unlock(&sem->__sem_lock);
return -1;
}
the thread manager. */
if (__pthread_manager_request < 0) {
if (__pthread_initialize_manager() < 0) {
- errno = EAGAIN;
+ __set_errno(EAGAIN);
return -1;
}
}