[PATCH 28/30] score: Delete Thread_Scheduler_control::own_node
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Oct 31 08:51:59 UTC 2016
Update #2556.
---
cpukit/score/include/rtems/score/coremuteximpl.h | 6 +++---
cpukit/score/include/rtems/score/mrspimpl.h | 9 ++++++---
cpukit/score/include/rtems/score/schedulerimpl.h | 5 ++---
cpukit/score/include/rtems/score/schedulersmpimpl.h | 2 +-
cpukit/score/include/rtems/score/thread.h | 8 --------
cpukit/score/include/rtems/score/threadimpl.h | 13 +------------
cpukit/score/src/threadchangepriority.c | 16 ++++++++++------
cpukit/score/src/threadinitialize.c | 3 +--
cpukit/score/src/threadmp.c | 3 ---
cpukit/score/src/threadqflush.c | 2 +-
cpukit/score/src/threadqops.c | 10 +++++-----
cpukit/score/src/threadrestart.c | 2 +-
12 files changed, 31 insertions(+), 48 deletions(-)
diff --git a/cpukit/score/include/rtems/score/coremuteximpl.h b/cpukit/score/include/rtems/score/coremuteximpl.h
index 2580606..5078c26 100644
--- a/cpukit/score/include/rtems/score/coremuteximpl.h
+++ b/cpukit/score/include/rtems/score/coremuteximpl.h
@@ -280,16 +280,16 @@ RTEMS_INLINE_ROUTINE Status_Control _CORE_ceiling_mutex_Set_owner(
)
{
ISR_lock_Context lock_context;
- Scheduler_Node *own_node;
+ Scheduler_Node *scheduler_node;
Per_CPU_Control *cpu_self;
_Thread_queue_Context_clear_priority_updates( queue_context );
_Thread_Wait_acquire_default_critical( owner, &lock_context );
- own_node = _Thread_Scheduler_get_own_node( owner );
+ scheduler_node = _Thread_Scheduler_get_home_node( owner );
if (
- own_node->Wait.Priority.Node.priority
+ _Priority_Get_priority( &scheduler_node->Wait.Priority )
< the_mutex->Priority_ceiling.priority
) {
_Thread_Wait_release_default_critical( owner, &lock_context );
diff --git a/cpukit/score/include/rtems/score/mrspimpl.h b/cpukit/score/include/rtems/score/mrspimpl.h
index 4b4e8c3..9555197 100644
--- a/cpukit/score/include/rtems/score/mrspimpl.h
+++ b/cpukit/score/include/rtems/score/mrspimpl.h
@@ -100,16 +100,19 @@ RTEMS_INLINE_ROUTINE Status_Control _MRSP_Raise_priority(
ISR_lock_Context lock_context;
const Scheduler_Control *scheduler;
Priority_Control ceiling_priority;
- Scheduler_Node *own_node;
+ Scheduler_Node *scheduler_node;
_Thread_queue_Context_clear_priority_updates( queue_context );
_Thread_Wait_acquire_default_critical( thread, &lock_context );
scheduler = _Scheduler_Get_own( thread );
- own_node = _Thread_Scheduler_get_own_node( thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( thread );
ceiling_priority = _MRSP_Get_priority( mrsp, scheduler );
- if ( ceiling_priority <= own_node->Wait.Priority.Node.priority ) {
+ if (
+ ceiling_priority
+ <= _Priority_Get_priority( &scheduler_node->Wait.Priority )
+ ) {
_Priority_Node_initialize( priority_node, ceiling_priority );
_Thread_Priority_add( thread, priority_node, queue_context );
status = STATUS_SUCCESSFUL;
diff --git a/cpukit/score/include/rtems/score/schedulerimpl.h b/cpukit/score/include/rtems/score/schedulerimpl.h
index 17482b9..298437c 100644
--- a/cpukit/score/include/rtems/score/schedulerimpl.h
+++ b/cpukit/score/include/rtems/score/schedulerimpl.h
@@ -893,7 +893,7 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Thread_set_priority(
{
Scheduler_Node *scheduler_node;
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Scheduler_Node_set_priority( scheduler_node, new_priority, prepend_it );
}
@@ -1244,7 +1244,7 @@ RTEMS_INLINE_ROUTINE Status_Control _Scheduler_Set(
return STATUS_RESOURCE_IN_USE;
}
- old_scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ old_scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Priority_Plain_extract(
&old_scheduler_node->Wait.Priority,
&the_thread->Real_priority
@@ -1311,7 +1311,6 @@ RTEMS_INLINE_ROUTINE Status_Control _Scheduler_Set(
the_thread->Scheduler.own_control = new_scheduler;
the_thread->Scheduler.control = new_scheduler;
- the_thread->Scheduler.own_node = new_scheduler_node;
_Scheduler_Node_set_priority( new_scheduler_node, priority, false );
if ( _States_Is_ready( current_state ) ) {
diff --git a/cpukit/score/include/rtems/score/schedulersmpimpl.h b/cpukit/score/include/rtems/score/schedulersmpimpl.h
index bfd7650..9926684 100644
--- a/cpukit/score/include/rtems/score/schedulersmpimpl.h
+++ b/cpukit/score/include/rtems/score/schedulersmpimpl.h
@@ -383,7 +383,7 @@ static inline Scheduler_SMP_Node *_Scheduler_SMP_Thread_get_own_node(
Thread_Control *thread
)
{
- return (Scheduler_SMP_Node *) _Thread_Scheduler_get_own_node( thread );
+ return (Scheduler_SMP_Node *) _Thread_Scheduler_get_home_node( thread );
}
static inline Scheduler_SMP_Node *_Scheduler_SMP_Node_downcast(
diff --git a/cpukit/score/include/rtems/score/thread.h b/cpukit/score/include/rtems/score/thread.h
index 8f923cd..ec00c05 100644
--- a/cpukit/score/include/rtems/score/thread.h
+++ b/cpukit/score/include/rtems/score/thread.h
@@ -269,14 +269,6 @@ typedef struct {
const struct Scheduler_Control *control;
/**
- * @brief The own scheduler node of this thread.
- *
- * This field is constant after initialization. It is used by change
- * priority and ask for help operations.
- */
- Scheduler_Node *own_node;
-
- /**
* @brief The processor assigned by the current scheduler.
*/
struct Per_CPU_Control *cpu;
diff --git a/cpukit/score/include/rtems/score/threadimpl.h b/cpukit/score/include/rtems/score/threadimpl.h
index b439758..a64602e 100644
--- a/cpukit/score/include/rtems/score/threadimpl.h
+++ b/cpukit/score/include/rtems/score/threadimpl.h
@@ -1002,17 +1002,6 @@ RTEMS_INLINE_ROUTINE void _Thread_Scheduler_cancel_need_for_help(
}
#endif
-RTEMS_INLINE_ROUTINE Scheduler_Node *_Thread_Scheduler_get_own_node(
- const Thread_Control *the_thread
-)
-{
-#if defined(RTEMS_SMP)
- return the_thread->Scheduler.own_node;
-#else
- return the_thread->Scheduler.nodes;
-#endif
-}
-
RTEMS_INLINE_ROUTINE Scheduler_Node *_Thread_Scheduler_get_home_node(
const Thread_Control *the_thread
)
@@ -1147,7 +1136,7 @@ RTEMS_INLINE_ROUTINE Priority_Control _Thread_Get_priority(
{
Scheduler_Node *scheduler_node;
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
return _Priority_Get_priority( &scheduler_node->Wait.Priority );
}
diff --git a/cpukit/score/src/threadchangepriority.c b/cpukit/score/src/threadchangepriority.c
index 4fd4c02..102c9d1 100644
--- a/cpukit/score/src/threadchangepriority.c
+++ b/cpukit/score/src/threadchangepriority.c
@@ -244,13 +244,13 @@ static void _Thread_Priority_apply(
Priority_Action_type priority_action_type
)
{
- Scheduler_Node *own_node;
+ Scheduler_Node *scheduler_node;
Thread_queue_Queue *queue;
- own_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Priority_Actions_initialize_one(
&queue_context->Priority.Actions,
- &own_node->Wait.Priority,
+ &scheduler_node->Wait.Priority,
priority_action_node,
priority_action_type
);
@@ -326,10 +326,14 @@ void _Thread_Priority_replace(
Priority_Node *replacement_node
)
{
- Scheduler_Node *own_node;
+ Scheduler_Node *scheduler_node;
- own_node = _Thread_Scheduler_get_own_node( the_thread );
- _Priority_Replace( &own_node->Wait.Priority, victim_node, replacement_node );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
+ _Priority_Replace(
+ &scheduler_node->Wait.Priority,
+ victim_node,
+ replacement_node
+ );
}
void _Thread_Priority_update( Thread_queue_Context *queue_context )
diff --git a/cpukit/score/src/threadinitialize.c b/cpukit/score/src/threadinitialize.c
index 37feb37..d34cb34 100644
--- a/cpukit/score/src/threadinitialize.c
+++ b/cpukit/score/src/threadinitialize.c
@@ -214,7 +214,7 @@ bool _Thread_Initialize(
&scheduler_node->Thread.Scheduler_node.Chain
);
#else
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Scheduler_Node_initialize(
scheduler,
scheduler_node,
@@ -234,7 +234,6 @@ bool _Thread_Initialize(
RTEMS_STATIC_ASSERT( THREAD_SCHEDULER_BLOCKED == 0, Scheduler_state );
the_thread->Scheduler.own_control = scheduler;
the_thread->Scheduler.control = scheduler;
- the_thread->Scheduler.own_node = scheduler_node;
_ISR_lock_Initialize( &the_thread->Scheduler.Lock, "Thread Scheduler" );
_ISR_lock_Initialize( &the_thread->Wait.Lock.Default, "Thread Wait Default" );
_Thread_queue_Gate_open( &the_thread->Wait.Lock.Tranquilizer );
diff --git a/cpukit/score/src/threadmp.c b/cpukit/score/src/threadmp.c
index 6ff5065..9b3a477 100644
--- a/cpukit/score/src/threadmp.c
+++ b/cpukit/score/src/threadmp.c
@@ -75,9 +75,6 @@ void _Thread_MP_Handler_initialization (
_Thread_Timer_initialize( &proxy->Timer, _Per_CPU_Get_by_index( 0 ) );
_RBTree_Initialize_node( &proxy->Active );
-#if defined(RTEMS_SMP)
- proxy->Scheduler.own_node = &proxy->Scheduler_node;
-#endif
proxy->Scheduler.nodes = &proxy->Scheduler_node;
_Scheduler_Node_do_initialize(
_Scheduler_Get_by_CPU_index( 0 ),
diff --git a/cpukit/score/src/threadqflush.c b/cpukit/score/src/threadqflush.c
index 9ea82af..6c9ca98 100644
--- a/cpukit/score/src/threadqflush.c
+++ b/cpukit/score/src/threadqflush.c
@@ -99,7 +99,7 @@ size_t _Thread_queue_Flush_critical(
if ( do_unblock ) {
Scheduler_Node *scheduler_node;
- scheduler_node = _Thread_Scheduler_get_own_node( first );
+ scheduler_node = _Thread_Scheduler_get_home_node( first );
_Chain_Append_unprotected(
&unblock,
&scheduler_node->Wait.Priority.Node.Node.Chain
diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c
index db22efd..445fc4c 100644
--- a/cpukit/score/src/threadqops.c
+++ b/cpukit/score/src/threadqops.c
@@ -142,7 +142,7 @@ static void _Thread_queue_FIFO_do_initialize(
{
Scheduler_Node *scheduler_node;
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Chain_Initialize_node( &scheduler_node->Wait.Priority.Node.Node.Chain );
_Chain_Initialize_one(
@@ -160,7 +160,7 @@ static void _Thread_queue_FIFO_do_enqueue(
{
Scheduler_Node *scheduler_node;
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Chain_Initialize_node( &scheduler_node->Wait.Priority.Node.Node.Chain );
_Chain_Append_unprotected(
@@ -182,7 +182,7 @@ static void _Thread_queue_FIFO_do_extract(
(void) current_or_previous_owner;
(void) queue_context;
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
_Chain_Extract_unprotected( &scheduler_node->Wait.Priority.Node.Node.Chain );
}
@@ -891,7 +891,7 @@ static void _Thread_queue_Priority_inherit_do_enqueue_change(
queue = arg;
owner = queue->owner;
- scheduler_node_of_owner = _Thread_Scheduler_get_own_node( owner );
+ scheduler_node_of_owner = _Thread_Scheduler_get_home_node( owner );
queue_context = THREAD_QUEUE_CONTEXT_OF_PRIORITY_ACTIONS( priority_actions );
_Priority_Actions_initialize_one(
@@ -1385,7 +1385,7 @@ static void _Thread_queue_Priority_inherit_do_surrender(
fifo_node = _Chain_Next( fifo_node );
}
#else
- scheduler_node = _Thread_Scheduler_get_own_node( the_thread );
+ scheduler_node = _Thread_Scheduler_get_home_node( the_thread );
priority_queue = _Thread_queue_Priority_queue( heads, scheduler_node );
scheduler_node_of_owner = priority_queue->scheduler_node;
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index 5cd9d43..08e3c80 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -170,7 +170,7 @@ static void _Thread_Free( Thread_Control *the_thread )
_ISR_lock_Destroy( &the_thread->Keys.Lock );
_Scheduler_Node_destroy(
_Scheduler_Get( the_thread ),
- _Thread_Scheduler_get_own_node( the_thread )
+ _Thread_Scheduler_get_home_node( the_thread )
);
_ISR_lock_Destroy( &the_thread->Timer.Lock );
--
1.8.4.5
More information about the devel
mailing list