[rtems commit] smp: _Scheduler_simple_smp_Allocate_processor()

Sebastian Huber sebh at rtems.org
Tue Aug 20 08:14:19 UTC 2013


Module:    rtems
Branch:    master
Commit:    fc2ad63203475ac93668b522c4364036a97e450d
Changeset: http://git.rtems.org/rtems/commit/?id=fc2ad63203475ac93668b522c4364036a97e450d

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Aug 12 10:59:40 2013 +0200

smp: _Scheduler_simple_smp_Allocate_processor()

Rename _Scheduler_simple_smp_Allocate_processor() to
_Scheduler_SMP_Allocate_processor().

---

 .../score/include/rtems/score/schedulersmpimpl.h   |   42 ++++++++++++++++++
 cpukit/score/src/schedulersimplesmp.c              |   46 +-------------------
 2 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/cpukit/score/include/rtems/score/schedulersmpimpl.h b/cpukit/score/include/rtems/score/schedulersmpimpl.h
index 7e123e2..d23b0c0 100644
--- a/cpukit/score/include/rtems/score/schedulersmpimpl.h
+++ b/cpukit/score/include/rtems/score/schedulersmpimpl.h
@@ -41,6 +41,48 @@ static inline Scheduler_SMP_Control *_Scheduler_SMP_Instance( void )
   return _Scheduler.information;
 }
 
+static inline void _Scheduler_SMP_Allocate_processor(
+  Thread_Control *scheduled,
+  Thread_Control *victim
+)
+{
+  Per_CPU_Control *cpu_of_scheduled = scheduled->cpu;
+  Per_CPU_Control *cpu_of_victim = victim->cpu;
+  Thread_Control *heir;
+
+  scheduled->is_scheduled = true;
+  victim->is_scheduled = false;
+
+  _Per_CPU_Acquire( cpu_of_scheduled );
+
+  if ( scheduled->is_executing ) {
+    heir = cpu_of_scheduled->heir;
+    cpu_of_scheduled->heir = scheduled;
+  } else {
+    heir = scheduled;
+  }
+
+  _Per_CPU_Release( cpu_of_scheduled );
+
+  if ( heir != victim ) {
+    const Per_CPU_Control *cpu_of_executing = _Per_CPU_Get();
+
+    heir->cpu = cpu_of_victim;
+
+    /*
+     * FIXME: Here we need atomic store operations with a relaxed memory order.
+     * The _CPU_SMP_Send_interrupt() will ensure that the change can be
+     * observed consistently.
+     */
+    cpu_of_victim->heir = heir;
+    cpu_of_victim->dispatch_necessary = true;
+
+    if ( cpu_of_victim != cpu_of_executing ) {
+      _Per_CPU_Send_interrupt( cpu_of_victim );
+    }
+  }
+}
+
 /** @} */
 
 #ifdef __cplusplus
diff --git a/cpukit/score/src/schedulersimplesmp.c b/cpukit/score/src/schedulersimplesmp.c
index 9e4c9d9..fa128f8 100644
--- a/cpukit/score/src/schedulersimplesmp.c
+++ b/cpukit/score/src/schedulersimplesmp.c
@@ -34,48 +34,6 @@ void _Scheduler_simple_smp_Initialize( void )
   _Scheduler.information = self;
 }
 
-static void _Scheduler_simple_smp_Allocate_processor(
-  Thread_Control *scheduled,
-  Thread_Control *victim
-)
-{
-  Per_CPU_Control *cpu_of_scheduled = scheduled->cpu;
-  Per_CPU_Control *cpu_of_victim = victim->cpu;
-  Thread_Control *heir;
-
-  scheduled->is_scheduled = true;
-  victim->is_scheduled = false;
-
-  _Per_CPU_Acquire( cpu_of_scheduled );
-
-  if ( scheduled->is_executing ) {
-    heir = cpu_of_scheduled->heir;
-    cpu_of_scheduled->heir = scheduled;
-  } else {
-    heir = scheduled;
-  }
-
-  _Per_CPU_Release( cpu_of_scheduled );
-
-  if ( heir != victim ) {
-    const Per_CPU_Control *cpu_of_executing = _Per_CPU_Get();
-
-    heir->cpu = cpu_of_victim;
-
-    /*
-     * FIXME: Here we need atomic store operations with a relaxed memory order.
-     * The _CPU_SMP_Send_interrupt() will ensure that the change can be
-     * observed consistently.
-     */
-    cpu_of_victim->heir = heir;
-    cpu_of_victim->dispatch_necessary = true;
-
-    if ( cpu_of_victim != cpu_of_executing ) {
-      _Per_CPU_Send_interrupt( cpu_of_victim );
-    }
-  }
-}
-
 static void _Scheduler_simple_smp_Move_from_scheduled_to_ready(
   Chain_Control *ready_chain,
   Thread_Control *scheduled_to_ready
@@ -118,7 +76,7 @@ static void _Scheduler_simple_smp_Enqueue_ordered(
     (Thread_Control *) _Chain_Last( &self->scheduled );
 
   if ( ( *order )( &thread->Object.Node, &lowest_scheduled->Object.Node ) ) {
-    _Scheduler_simple_smp_Allocate_processor( thread, lowest_scheduled );
+    _Scheduler_SMP_Allocate_processor( thread, lowest_scheduled );
 
     _Scheduler_simple_smp_Insert( &self->scheduled, thread, order );
 
@@ -157,7 +115,7 @@ void _Scheduler_simple_smp_Extract( Thread_Control *thread )
     Thread_Control *highest_ready =
       (Thread_Control *) _Chain_First( &self->ready[ 0 ] );
 
-    _Scheduler_simple_smp_Allocate_processor( highest_ready, thread );
+    _Scheduler_SMP_Allocate_processor( highest_ready, thread );
 
     _Scheduler_simple_smp_Move_from_ready_to_scheduled(
       &self->scheduled,




More information about the vc mailing list