diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-07-05 13:37:10 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-07-27 10:55:30 +0200 |
commit | 3a58dc863157bb21054a144c1a21b690544c0d23 (patch) | |
tree | 254e87635343490eca3a41d34a6da2609b29e6d7 /cpukit/score/include/rtems/score/threadqimpl.h | |
parent | score: Simplify _Thread_queue_Boost_priority() (diff) | |
download | rtems-3a58dc863157bb21054a144c1a21b690544c0d23.tar.bz2 |
score: Priority inherit thread queue operations
Move the priority change due to priority interitance to the thread queue
enqueue operation to simplify the locking on SMP configurations.
Update #2412.
Update #2556.
Update #2765.
Diffstat (limited to 'cpukit/score/include/rtems/score/threadqimpl.h')
-rw-r--r-- | cpukit/score/include/rtems/score/threadqimpl.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/cpukit/score/include/rtems/score/threadqimpl.h b/cpukit/score/include/rtems/score/threadqimpl.h index e7db7bb6c0..1f17f1a4f1 100644 --- a/cpukit/score/include/rtems/score/threadqimpl.h +++ b/cpukit/score/include/rtems/score/threadqimpl.h @@ -36,6 +36,27 @@ extern "C" { /**@{*/ /** + * @brief Representation of a thread queue path from a start thread queue to + * the terminal thread queue. + * + * The start thread queue is determined by the object on which a thread intends + * to block. The terminal thread queue is the thread queue reachable via + * thread queue links those owner is not blocked on a thread queue. The thread + * queue links are determined by the thread queue owner and thread wait queue + * relationships. + */ +struct Thread_queue_Path { + /** + * @brief A potential thread to update the priority via + * _Thread_Update_priority(). + * + * This thread is determined by thread queues which support priority + * inheritance. + */ + Thread_Control *update_priority; +}; + +/** * @brief Thread queue with a layout compatible to struct _Thread_queue_Queue * defined in Newlib <sys/lock.h>. */ @@ -888,6 +909,8 @@ extern const Thread_queue_Operations _Thread_queue_Operations_FIFO; extern const Thread_queue_Operations _Thread_queue_Operations_priority; +extern const Thread_queue_Operations _Thread_queue_Operations_priority_inherit; + /**@}*/ #ifdef __cplusplus |