mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-31 18:47:21 +08:00
@@ -301,6 +301,9 @@ extern "C" {
|
|||||||
// Execute a blocking wait for that time in the future
|
// Execute a blocking wait for that time in the future
|
||||||
errno = 0;
|
errno = 0;
|
||||||
ret = px4_sem_timedwait(&sem, &ts);
|
ret = px4_sem_timedwait(&sem, &ts);
|
||||||
|
#ifndef __PX4_DARWIN
|
||||||
|
ret = errno;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Ensure ret is negative on failure
|
// Ensure ret is negative on failure
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ int px4_sem_timedwait(px4_sem_t *s, const struct timespec *abstime)
|
|||||||
}
|
}
|
||||||
|
|
||||||
s->value--;
|
s->value--;
|
||||||
|
errno = 0;
|
||||||
|
|
||||||
if (s->value < 0) {
|
if (s->value < 0) {
|
||||||
ret = pthread_cond_timedwait(&(s->wait), &(s->lock), abstime);
|
ret = pthread_cond_timedwait(&(s->wait), &(s->lock), abstime);
|
||||||
@@ -103,10 +104,7 @@ int px4_sem_timedwait(px4_sem_t *s, const struct timespec *abstime)
|
|||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int err = errno;
|
int err = ret;
|
||||||
#ifdef __PX4_DARWIN
|
|
||||||
err = ret;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (err != 0 && err != ETIMEDOUT) {
|
if (err != 0 && err != ETIMEDOUT) {
|
||||||
setbuf(stdout, NULL);
|
setbuf(stdout, NULL);
|
||||||
@@ -119,7 +117,7 @@ int px4_sem_timedwait(px4_sem_t *s, const struct timespec *abstime)
|
|||||||
|
|
||||||
int mret = pthread_mutex_unlock(&(s->lock));
|
int mret = pthread_mutex_unlock(&(s->lock));
|
||||||
|
|
||||||
return (ret) ? ret : mret;
|
return (err) ? err : mret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int px4_sem_post(px4_sem_t *s)
|
int px4_sem_post(px4_sem_t *s)
|
||||||
|
|||||||
Reference in New Issue
Block a user