summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/threadqimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-07-05 13:37:10 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-07-27 10:55:30 +0200
commit3a58dc863157bb21054a144c1a21b690544c0d23 (patch)
tree254e87635343490eca3a41d34a6da2609b29e6d7 /cpukit/score/include/rtems/score/threadqimpl.h
parentscore: Simplify _Thread_queue_Boost_priority() (diff)
downloadrtems-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.h23
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