summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/threadq.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/threadq.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/threadq.h')
-rw-r--r--cpukit/score/include/rtems/score/threadq.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/cpukit/score/include/rtems/score/threadq.h b/cpukit/score/include/rtems/score/threadq.h
index b3b8fec980..75aab20993 100644
--- a/cpukit/score/include/rtems/score/threadq.h
+++ b/cpukit/score/include/rtems/score/threadq.h
@@ -43,6 +43,8 @@ extern "C" {
typedef struct _Thread_Control Thread_Control;
+typedef struct Thread_queue_Path Thread_queue_Path;
+
#if defined(RTEMS_MULTIPROCESSING)
/**
* @brief Multiprocessing (MP) support callout for thread queue operations.
@@ -239,6 +241,10 @@ typedef void ( *Thread_queue_Priority_change_operation )(
/**
* @brief Thread queue enqueue operation.
*
+ * A potential thread to update the priority due to priority inheritance is
+ * returned via the thread queue path. This thread is handed over to
+ * _Thread_Update_priority().
+ *
* @param[in] queue The actual thread queue.
* @param[in] the_thread The thread to enqueue on the queue.
*
@@ -246,7 +252,8 @@ typedef void ( *Thread_queue_Priority_change_operation )(
*/
typedef void ( *Thread_queue_Enqueue_operation )(
Thread_queue_Queue *queue,
- Thread_Control *the_thread
+ Thread_Control *the_thread,
+ Thread_queue_Path *path
);
/**