diff options
author | Gedare Bloom <gedare@rtems.org> | 2016-06-09 11:33:15 -0400 |
---|---|---|
committer | Gedare Bloom <gedare@rtems.org> | 2016-07-25 12:44:47 -0400 |
commit | f23d4706169d68d3c4e90b297650f89c272716f4 (patch) | |
tree | 333bdc4b4be2ec4ad7ee80ee03229759ec60602a /cpukit/posix/src | |
parent | score: Fix for RTEMS_DEBUG (diff) | |
download | rtems-f23d4706169d68d3c4e90b297650f89c272716f4.tar.bz2 |
cpukit: Add and use Watchdog_Discipline.
Clock disciplines may be WATCHDOG_RELATIVE, WATCHDOG_ABSOLUTE,
or WATCHDOG_NO_TIMEOUT. A discipline of WATCHDOG_RELATIVE with
a timeout of WATCHDOG_NO_TIMEOUT is equivalent to a discipline
of WATCHDOG_NO_TIMEOUT.
updates #2732
Diffstat (limited to 'cpukit/posix/src')
-rw-r--r-- | cpukit/posix/src/condwaitsupp.c | 3 | ||||
-rw-r--r-- | cpukit/posix/src/mqueuerecvsupp.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/mqueuesendsupp.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/mutexlocksupp.c | 4 | ||||
-rw-r--r-- | cpukit/posix/src/nanosleep.c | 1 | ||||
-rw-r--r-- | cpukit/posix/src/pbarrierwait.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/prwlockrdlock.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/prwlocktimedrdlock.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/prwlocktimedwrlock.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/prwlocktryrdlock.c | 1 | ||||
-rw-r--r-- | cpukit/posix/src/prwlocktrywrlock.c | 1 | ||||
-rw-r--r-- | cpukit/posix/src/prwlockwrlock.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/pthreadjoin.c | 1 | ||||
-rw-r--r-- | cpukit/posix/src/semaphorewaitsupp.c | 2 | ||||
-rw-r--r-- | cpukit/posix/src/sigtimedwait.c | 2 |
15 files changed, 14 insertions, 15 deletions
diff --git a/cpukit/posix/src/condwaitsupp.c b/cpukit/posix/src/condwaitsupp.c index ebcb3c4baf..b2ed367cb7 100644 --- a/cpukit/posix/src/condwaitsupp.c +++ b/cpukit/posix/src/condwaitsupp.c @@ -68,12 +68,13 @@ int _POSIX_Condition_variables_Wait_support( if ( !already_timedout ) { _Thread_queue_Context_set_expected_level( &queue_context, 2 ); + _Thread_queue_Context_set_timeout( &queue_context, timeout ); + _Thread_queue_Context_set_discipline( &queue_context, WATCHDOG_RELATIVE ); _Thread_queue_Enqueue_critical( &the_cond->Wait_queue.Queue, POSIX_CONDITION_VARIABLES_TQ_OPERATIONS, executing, STATES_WAITING_FOR_CONDITION_VARIABLE, - timeout, &queue_context ); } else { diff --git a/cpukit/posix/src/mqueuerecvsupp.c b/cpukit/posix/src/mqueuerecvsupp.c index cbb0dc08b8..dcb81787a1 100644 --- a/cpukit/posix/src/mqueuerecvsupp.c +++ b/cpukit/posix/src/mqueuerecvsupp.c @@ -97,13 +97,13 @@ ssize_t _POSIX_Message_queue_Receive_support( * Now perform the actual message receive */ executing = _Thread_Executing; + _Thread_queue_Context_set_relative_timeout( &queue_context, timeout ); status = _CORE_message_queue_Seize( &the_mq->Message_queue, executing, msg_ptr, &length_out, do_wait, - timeout, &queue_context ); diff --git a/cpukit/posix/src/mqueuesendsupp.c b/cpukit/posix/src/mqueuesendsupp.c index 9785fb2086..3fd51a4eeb 100644 --- a/cpukit/posix/src/mqueuesendsupp.c +++ b/cpukit/posix/src/mqueuesendsupp.c @@ -92,6 +92,7 @@ int _POSIX_Message_queue_Send_support( * Now perform the actual message receive */ executing = _Thread_Executing; + _Thread_queue_Context_set_relative_timeout( &queue_context, timeout ); status = _CORE_message_queue_Submit( &the_mq->Message_queue, executing, @@ -99,7 +100,6 @@ int _POSIX_Message_queue_Send_support( msg_len, _POSIX_Message_queue_Priority_to_core( msg_prio ), do_wait, - timeout, &queue_context ); return _POSIX_Zero_or_minus_one_plus_errno( status ); diff --git a/cpukit/posix/src/mutexlocksupp.c b/cpukit/posix/src/mutexlocksupp.c index d3d07f68e8..1da6238d1d 100644 --- a/cpukit/posix/src/mutexlocksupp.c +++ b/cpukit/posix/src/mutexlocksupp.c @@ -63,6 +63,7 @@ int _POSIX_Mutex_Lock_support( } executing = _Thread_Executing; + _Thread_queue_Context_set_relative_timeout( &queue_context, timeout ); switch ( the_mutex->protocol ) { case POSIX_MUTEX_PRIORITY_CEILING: @@ -70,7 +71,6 @@ int _POSIX_Mutex_Lock_support( &the_mutex->Mutex, executing, wait, - timeout, _POSIX_Mutex_Lock_nested, &queue_context ); @@ -81,7 +81,6 @@ int _POSIX_Mutex_Lock_support( POSIX_MUTEX_NO_PROTOCOL_TQ_OPERATIONS, executing, wait, - timeout, _POSIX_Mutex_Lock_nested, &queue_context ); @@ -92,7 +91,6 @@ int _POSIX_Mutex_Lock_support( &the_mutex->Mutex.Recursive, executing, wait, - timeout, _POSIX_Mutex_Lock_nested, &queue_context ); diff --git a/cpukit/posix/src/nanosleep.c b/cpukit/posix/src/nanosleep.c index e0e1b2676e..8fc86d6503 100644 --- a/cpukit/posix/src/nanosleep.c +++ b/cpukit/posix/src/nanosleep.c @@ -93,6 +93,7 @@ int nanosleep( executing, STATES_DELAYING | STATES_INTERRUPTIBLE_BY_SIGNAL, ticks, + WATCHDOG_RELATIVE, 1 ); diff --git a/cpukit/posix/src/pbarrierwait.c b/cpukit/posix/src/pbarrierwait.c index 0197e46702..117beac553 100644 --- a/cpukit/posix/src/pbarrierwait.c +++ b/cpukit/posix/src/pbarrierwait.c @@ -41,11 +41,11 @@ int pthread_barrier_wait( return EINVAL; } + _Thread_queue_Context_set_no_timeout( &queue_context ); status = _CORE_barrier_Seize( &the_barrier->Barrier, _Thread_Executing, true, - WATCHDOG_NO_TIMEOUT, &queue_context ); return _POSIX_Get_error( status ); diff --git a/cpukit/posix/src/prwlockrdlock.c b/cpukit/posix/src/prwlockrdlock.c index 295148e4bf..5b15f5568f 100644 --- a/cpukit/posix/src/prwlockrdlock.c +++ b/cpukit/posix/src/prwlockrdlock.c @@ -35,11 +35,11 @@ int pthread_rwlock_rdlock( return EINVAL; } + _Thread_queue_Context_set_no_timeout( &queue_context ); status = _CORE_RWLock_Seize_for_reading( &the_rwlock->RWLock, _Thread_Executing, true, /* we are willing to wait forever */ - 0, &queue_context ); return _POSIX_Get_error( status ); diff --git a/cpukit/posix/src/prwlocktimedrdlock.c b/cpukit/posix/src/prwlocktimedrdlock.c index 1c1059051b..c1a77e9b3c 100644 --- a/cpukit/posix/src/prwlocktimedrdlock.c +++ b/cpukit/posix/src/prwlocktimedrdlock.c @@ -56,11 +56,11 @@ int pthread_rwlock_timedrdlock( return EINVAL; } + _Thread_queue_Context_set_relative_timeout( &queue_context, ticks ); status = _CORE_RWLock_Seize_for_reading( &the_rwlock->RWLock, _Thread_Executing, do_wait, - ticks, &queue_context ); diff --git a/cpukit/posix/src/prwlocktimedwrlock.c b/cpukit/posix/src/prwlocktimedwrlock.c index 8080a8a920..b7a9028a35 100644 --- a/cpukit/posix/src/prwlocktimedwrlock.c +++ b/cpukit/posix/src/prwlocktimedwrlock.c @@ -58,11 +58,11 @@ int pthread_rwlock_timedwrlock( return EINVAL; } + _Thread_queue_Context_set_relative_timeout( &queue_context, ticks ); status = _CORE_RWLock_Seize_for_writing( &the_rwlock->RWLock, _Thread_Executing, do_wait, - ticks, &queue_context ); diff --git a/cpukit/posix/src/prwlocktryrdlock.c b/cpukit/posix/src/prwlocktryrdlock.c index 5c6931ec0d..052f1b011e 100644 --- a/cpukit/posix/src/prwlocktryrdlock.c +++ b/cpukit/posix/src/prwlocktryrdlock.c @@ -39,7 +39,6 @@ int pthread_rwlock_tryrdlock( &the_rwlock->RWLock, _Thread_Executing, false, /* do not wait for the rwlock */ - 0, &queue_context ); return _POSIX_Get_error( status ); diff --git a/cpukit/posix/src/prwlocktrywrlock.c b/cpukit/posix/src/prwlocktrywrlock.c index 1181382fca..976e7a84ac 100644 --- a/cpukit/posix/src/prwlocktrywrlock.c +++ b/cpukit/posix/src/prwlocktrywrlock.c @@ -39,7 +39,6 @@ int pthread_rwlock_trywrlock( &the_rwlock->RWLock, _Thread_Executing, false, /* we are not willing to wait */ - 0, &queue_context ); return _POSIX_Get_error( status ); diff --git a/cpukit/posix/src/prwlockwrlock.c b/cpukit/posix/src/prwlockwrlock.c index 4592aaa04e..a78554f878 100644 --- a/cpukit/posix/src/prwlockwrlock.c +++ b/cpukit/posix/src/prwlockwrlock.c @@ -39,11 +39,11 @@ int pthread_rwlock_wrlock( return EINVAL; } + _Thread_queue_Context_set_no_timeout( &queue_context ); status = _CORE_RWLock_Seize_for_writing( &the_rwlock->RWLock, _Thread_Executing, true, /* do not timeout -- wait forever */ - 0, &queue_context ); return _POSIX_Get_error( status ); diff --git a/cpukit/posix/src/pthreadjoin.c b/cpukit/posix/src/pthreadjoin.c index 86b805132a..641031c20d 100644 --- a/cpukit/posix/src/pthreadjoin.c +++ b/cpukit/posix/src/pthreadjoin.c @@ -40,6 +40,7 @@ static int _POSIX_Threads_Join( pthread_t thread, void **value_ptr ) _Thread_queue_Context_initialize( &queue_context ); _Thread_queue_Context_set_expected_level( &queue_context, 1 ); + _Thread_queue_Context_set_no_timeout( &queue_context ); the_thread = _Thread_Get( thread, &queue_context.Lock_context ); if ( the_thread == NULL ) { diff --git a/cpukit/posix/src/semaphorewaitsupp.c b/cpukit/posix/src/semaphorewaitsupp.c index 9ba8d55894..a4c43fd704 100644 --- a/cpukit/posix/src/semaphorewaitsupp.c +++ b/cpukit/posix/src/semaphorewaitsupp.c @@ -41,12 +41,12 @@ int _POSIX_Semaphore_Wait_support( rtems_set_errno_and_return_minus_one( EINVAL ); } + _Thread_queue_Context_set_relative_timeout( &queue_context, timeout ); status = _CORE_semaphore_Seize( &the_semaphore->Semaphore, POSIX_SEMAPHORE_TQ_OPERATIONS, _Thread_Executing, blocking, - timeout, &queue_context ); return _POSIX_Zero_or_minus_one_plus_errno( status ); diff --git a/cpukit/posix/src/sigtimedwait.c b/cpukit/posix/src/sigtimedwait.c index 7855bb0080..0e8518ed75 100644 --- a/cpukit/posix/src/sigtimedwait.c +++ b/cpukit/posix/src/sigtimedwait.c @@ -153,12 +153,12 @@ int sigtimedwait( executing->Wait.option = *set; executing->Wait.return_argument = the_info; _Thread_queue_Context_set_expected_level( &queue_context, 1 ); + _Thread_queue_Context_set_relative_timeout( &queue_context, interval ); _Thread_queue_Enqueue_critical( &_POSIX_signals_Wait_queue.Queue, POSIX_SIGNALS_TQ_OPERATIONS, executing, STATES_WAITING_FOR_SIGNAL | STATES_INTERRUPTIBLE_BY_SIGNAL, - interval, &queue_context ); |