forked from xuos/xiuos
fix sem bug in function PrivSemaphoreObtainWait for nuttx
This commit is contained in:
parent
04ec9ca069
commit
60e35914a5
|
@ -55,17 +55,19 @@ int PrivSemaphoreDelete(sem_t *sem)
|
||||||
|
|
||||||
int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime)
|
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;
|
struct timespec timeout;
|
||||||
clock_gettime(CLOCK_REALTIME, &timeout);
|
clock_gettime(CLOCK_REALTIME, &timeout);
|
||||||
timeout.tv_sec += abstime->tv_sec;
|
timeout.tv_sec += abstime->tv_sec;
|
||||||
return sem_timedwait(sem, &timeout);
|
return sem_timedwait(sem, &timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
int PrivSemaphoreObtainWaitForever(sem_t *sem)
|
|
||||||
{
|
|
||||||
return sem_wait(sem);
|
|
||||||
}
|
|
||||||
|
|
||||||
int PrivSemaphoreObtainNoWait(sem_t *sem)
|
int PrivSemaphoreObtainNoWait(sem_t *sem)
|
||||||
{
|
{
|
||||||
return sem_trywait(sem);
|
return sem_trywait(sem);
|
||||||
|
|
|
@ -182,7 +182,6 @@ int PrivMutexAbandon(pthread_mutex_t *p_mutex);
|
||||||
int PrivSemaphoreCreate(sem_t *sem, int pshared, unsigned int value);
|
int PrivSemaphoreCreate(sem_t *sem, int pshared, unsigned int value);
|
||||||
int PrivSemaphoreDelete(sem_t *sem);
|
int PrivSemaphoreDelete(sem_t *sem);
|
||||||
int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime);
|
int PrivSemaphoreObtainWait(sem_t *sem, const struct timespec *abstime);
|
||||||
int PrivSemaphoreObtainWaitForever(sem_t *sem);
|
|
||||||
int PrivSemaphoreObtainNoWait(sem_t *sem);
|
int PrivSemaphoreObtainNoWait(sem_t *sem);
|
||||||
int PrivSemaphoreAbandon(sem_t *sem);
|
int PrivSemaphoreAbandon(sem_t *sem);
|
||||||
int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val);
|
int32_t PrivSemaphoreSetValue(int32_t sem, uint16_t val);
|
||||||
|
|
Loading…
Reference in New Issue