summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/threadqimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-24 13:15:47 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-25 12:43:53 +0200
commit0e9d5b69cccac14f02f8370e1f75d3ac714a4350 (patch)
treed2bcd5c3b216ba018d8b11e58c8170014fc83f38 /cpukit/score/include/rtems/score/threadqimpl.h
parentconfdefs.h: Fix heap alloc size estimate (diff)
downloadrtems-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.h60
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;