posix: semaphore: fix bugs and simplify code
Modifies several functions that are causing wrong behaviour. * semaphore.h: add missing restrict keyword. * sem_destroy(): check that nobody is waiting before destroying the object. * sem_timedwait(): simpify function logic and fix a bug when abstime > currtime, that passed ticks instead of ms to k_sem_take(). * sem_wait(): avoid unnecessary checks. * sem_init(): add pshared value assertion. Signed-off-by: Juan Manuel Torres Palma <j.m.torrespalma@gmail.com>
This commit is contained in:
parent
08418a210d
commit
342da7ac72
2 changed files with 29 additions and 50 deletions
|
@ -14,10 +14,10 @@ extern "C" {
|
|||
#include <time.h>
|
||||
|
||||
int sem_destroy(sem_t *semaphore);
|
||||
int sem_getvalue(sem_t *semaphore, int *value);
|
||||
int sem_getvalue(sem_t *restrict semaphore, int *restrict value);
|
||||
int sem_init(sem_t *semaphore, int pshared, unsigned int value);
|
||||
int sem_post(sem_t *semaphore);
|
||||
int sem_timedwait(sem_t *semaphore, struct timespec *abstime);
|
||||
int sem_timedwait(sem_t *restrict semaphore, struct timespec *restrict abstime);
|
||||
int sem_trywait(sem_t *semaphore);
|
||||
int sem_wait(sem_t *semaphore);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue