htl: Use __hurd_fail () instead of assigning errno

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230520115531.3911877-2-bugaevc@gmail.com>
This commit is contained in:
Sergey Bugaev 2023-05-20 14:55:30 +03:00 committed by Samuel Thibault
parent 9ec31e5727
commit 70d0dda0c1
4 changed files with 9 additions and 18 deletions

View file

@ -19,6 +19,7 @@
#include <semaphore.h> #include <semaphore.h>
#include <errno.h> #include <errno.h>
#include <hurd.h>
#include <pt-internal.h> #include <pt-internal.h>
int int
@ -34,10 +35,7 @@ __sem_destroy (sem_t *sem)
#endif #endif
) )
/* There are threads waiting on *SEM. */ /* There are threads waiting on *SEM. */
{ return __hurd_fail (EBUSY);
errno = EBUSY;
return -1;
}
return 0; return 0;
} }

View file

@ -19,6 +19,7 @@
#include <semaphore.h> #include <semaphore.h>
#include <errno.h> #include <errno.h>
#include <hurd.h>
#include <pt-internal.h> #include <pt-internal.h>
int int
@ -26,10 +27,7 @@ __sem_init (sem_t *sem, int pshared, unsigned value)
{ {
#ifdef SEM_VALUE_MAX #ifdef SEM_VALUE_MAX
if (value > SEM_VALUE_MAX) if (value > SEM_VALUE_MAX)
{ return __hurd_fail (EINVAL);
errno = EINVAL;
return -1;
}
#endif #endif
struct new_sem *isem = (struct new_sem *) sem; struct new_sem *isem = (struct new_sem *) sem;

View file

@ -20,6 +20,7 @@
#include <assert.h> #include <assert.h>
#include <hurdlock.h> #include <hurdlock.h>
#include <hurd.h>
#include <pt-internal.h> #include <pt-internal.h>
@ -35,10 +36,7 @@ __sem_post (sem_t *sem)
do do
{ {
if ((d & SEM_VALUE_MASK) == SEM_VALUE_MAX) if ((d & SEM_VALUE_MASK) == SEM_VALUE_MAX)
{ return __hurd_fail (EOVERFLOW);
errno = EOVERFLOW;
return -1;
}
} }
while (!atomic_compare_exchange_weak_release (&isem->data, &d, d + 1)); while (!atomic_compare_exchange_weak_release (&isem->data, &d, d + 1));
@ -51,10 +49,7 @@ __sem_post (sem_t *sem)
do do
{ {
if ((v >> SEM_VALUE_SHIFT) == SEM_VALUE_MAX) if ((v >> SEM_VALUE_SHIFT) == SEM_VALUE_MAX)
{ return __hurd_fail (EOVERFLOW);
errno = EOVERFLOW;
return -1;
}
} }
while (!atomic_compare_exchange_weak_release while (!atomic_compare_exchange_weak_release
(&isem->value, &v, v + (1 << SEM_VALUE_SHIFT))); (&isem->value, &v, v + (1 << SEM_VALUE_SHIFT)));

View file

@ -19,6 +19,7 @@
#include <semaphore.h> #include <semaphore.h>
#include <errno.h> #include <errno.h>
#include <hurd.h>
#include <pt-internal.h> #include <pt-internal.h>
int int
@ -29,8 +30,7 @@ __sem_trywait (sem_t *sem)
if (__sem_waitfast (isem, 1) == 0) if (__sem_waitfast (isem, 1) == 0)
return 0; return 0;
errno = EAGAIN; return __hurd_fail (EAGAIN);
return -1;
} }
weak_alias (__sem_trywait, sem_trywait); weak_alias (__sem_trywait, sem_trywait);