fix sem bug in function PrivSemaphoreObtainWait for nuttx

This commit is contained in:
wgzAIIT 2022-05-18 17:19:47 +08:00
parent 04ec9ca069
commit 60e35914a5
2 changed files with 7 additions and 6 deletions

View File

@ -55,17 +55,19 @@ int PrivSemaphoreDelete(sem_t *sem)
int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime)
{
/* if the timeout is not set, it will be blocked all the time. */
if(!abstime)
{
return sem_wait(sem);
}
/* if the timeout time is set, it will be executed downward after the timeout, and will not be blocked. */
struct timespec timeout;
clock_gettime(CLOCK_REALTIME, &timeout);
timeout.tv_sec += abstime->tv_sec;
return sem_timedwait(sem, &timeout);
}
int PrivSemaphoreObtainWaitForever(sem_t *sem)
{
return sem_wait(sem);
}
int PrivSemaphoreObtainNoWait(sem_t *sem)
{
return sem_trywait(sem);

View File

@ -182,7 +182,6 @@ int PrivMutexAbandon(pthread_mutex_t *p_mutex);
int PrivSemaphoreCreate(sem_t *sem, int pshared, unsigned int value);
int PrivSemaphoreDelete(sem_t *sem);
int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime);
int PrivSemaphoreObtainWaitForever(sem_t *sem);
int PrivSemaphoreObtainNoWait(sem_t *sem);
int PrivSemaphoreAbandon(sem_t *sem);
int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val);