diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-24 13:15:47 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-25 12:43:53 +0200 |
commit | 0e9d5b69cccac14f02f8370e1f75d3ac714a4350 (patch) | |
tree | d2bcd5c3b216ba018d8b11e58c8170014fc83f38 /cpukit/score/include/rtems/score/threadqimpl.h | |
parent | confdefs.h: Fix heap alloc size estimate (diff) | |
download | rtems-0e9d5b69cccac14f02f8370e1f75d3ac714a4350.tar.bz2 |
mpci: Fix thread queue flush method
We must call the MP callout for proxies if we unblock them after a
thread queue extraction. This was missing in
_Thread_queue_Flush_critical(). Move thread remove timer and unblock
code to new function _Thread_Remove_timer_and_unblock().
Diffstat (limited to 'cpukit/score/include/rtems/score/threadqimpl.h')
-rw-r--r-- | cpukit/score/include/rtems/score/threadqimpl.h | 60 |
1 files changed, 11 insertions, 49 deletions
diff --git a/cpukit/score/include/rtems/score/threadqimpl.h b/cpukit/score/include/rtems/score/threadqimpl.h index 5ce89e76f4..0c4e979a5e 100644 --- a/cpukit/score/include/rtems/score/threadqimpl.h +++ b/cpukit/score/include/rtems/score/threadqimpl.h @@ -407,17 +407,6 @@ bool _Thread_queue_Do_extract_locked( ) #endif -void _Thread_queue_Do_unblock_critical( - bool unblock, - Thread_queue_Queue *queue, - Thread_Control *the_thread, -#if defined(RTEMS_MULTIPROCESSING) - Thread_queue_MP_callout mp_callout, - Objects_Id mp_id, -#endif - ISR_lock_Context *lock_context -); - /** * @brief Unblocks the thread which was on the thread queue before. * @@ -430,46 +419,14 @@ void _Thread_queue_Do_unblock_critical( * _Thread_queue_Extract_locked(). * @param[in] queue The actual thread queue. * @param[in] the_thread The thread to extract. - * @param[in] mp_callout Callout to unblock the thread in case it is actually a - * thread proxy. This parameter is only used on multiprocessing - * configurations. - * @param[in] mp_id Object identifier of the object containing the thread - * queue. This parameter is only used on multiprocessing configurations. * @param[in] lock_context The lock context of the lock acquire. */ -#if defined(RTEMS_MULTIPROCESSING) - #define _Thread_queue_Unblock_critical( \ - unblock, \ - queue, \ - the_thread, \ - mp_callout, \ - mp_id, \ - lock_context \ - ) \ - _Thread_queue_Do_unblock_critical( \ - unblock, \ - queue, \ - the_thread, \ - mp_callout, \ - mp_id, \ - lock_context \ - ) -#else - #define _Thread_queue_Unblock_critical( \ - unblock, \ - queue, \ - the_thread, \ - mp_callout, \ - mp_id, \ - lock_context \ - ) \ - _Thread_queue_Do_unblock_critical( \ - unblock, \ - queue, \ - the_thread, \ - lock_context \ - ) -#endif +void _Thread_queue_Unblock_critical( + bool unblock, + Thread_queue_Queue *queue, + Thread_Control *the_thread, + ISR_lock_Context *lock_context +); void _Thread_queue_Do_extract_critical( Thread_queue_Queue *queue, @@ -831,6 +788,11 @@ void _Thread_queue_MP_callout_do_nothing( Thread_Control *the_proxy, Objects_Id mp_id ); + +void _Thread_queue_Unblock_proxy( + Thread_queue_Queue *queue, + Thread_Control *the_thread +); #endif extern const Thread_queue_Operations _Thread_queue_Operations_default; |