summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/condtimedwait.c
diff options
context:
space:
mode:
authorGedare Bloom <gedare@rtems.org>2016-06-23 16:10:39 -0400
committerGedare Bloom <gedare@rtems.org>2016-07-25 12:44:47 -0400
commit127c20ebd7ec45be2849c82437ba5e33ebf1fd46 (patch)
tree73aca8b41311191c4ac98a110798913af2227281 /cpukit/posix/src/condtimedwait.c
parentcpukit/rtems: fix return type mismatch for _TOD_To_seconds (diff)
downloadrtems-127c20ebd7ec45be2849c82437ba5e33ebf1fd46.tar.bz2
posix: refactor cond wait support to defer abstime conversion
updates #2745
Diffstat (limited to 'cpukit/posix/src/condtimedwait.c')
-rw-r--r--cpukit/posix/src/condtimedwait.c25
1 files changed, 1 insertions, 24 deletions
diff --git a/cpukit/posix/src/condtimedwait.c b/cpukit/posix/src/condtimedwait.c
index 1a2f5ff542..6c0b14f27b 100644
--- a/cpukit/posix/src/condtimedwait.c
+++ b/cpukit/posix/src/condtimedwait.c
@@ -31,32 +31,9 @@ int pthread_cond_timedwait(
const struct timespec *abstime
)
{
- Watchdog_Interval ticks;
- bool already_timedout;
- TOD_Absolute_timeout_conversion_results status;
-
- /*
- * POSIX requires that blocking calls with timeouts that take
- * an absolute timeout must ignore issues with the absolute
- * time provided if the operation would otherwise succeed.
- * So we check the abstime provided, and hold on to whether it
- * is valid or not. If it isn't correct and in the future,
- * then we do a polling operation and convert the UNSATISFIED
- * status into the appropriate error.
- */
- already_timedout = false;
- status = _TOD_Absolute_timeout_to_ticks(abstime, &ticks);
- if ( status == TOD_ABSOLUTE_TIMEOUT_INVALID )
- return EINVAL;
-
- if ( status == TOD_ABSOLUTE_TIMEOUT_IS_IN_PAST ||
- status == TOD_ABSOLUTE_TIMEOUT_IS_NOW )
- already_timedout = true;
-
return _POSIX_Condition_variables_Wait_support(
cond,
mutex,
- ticks,
- already_timedout
+ abstime
);
}