[PATCH 04/12] score: _Scheduler_priority_Ready_queue_initialize()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Aug 13 13:42:49 UTC 2013


Move workspace allocation to _Scheduler_priority_Initialize().
---
 .../include/rtems/score/schedulerpriorityimpl.h    |   14 ++++----------
 cpukit/score/src/schedulerpriority.c               |   10 +++++++++-
 cpukit/score/src/schedulerpriorityallocate.c       |    1 +
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/cpukit/score/include/rtems/score/schedulerpriorityimpl.h b/cpukit/score/include/rtems/score/schedulerpriorityimpl.h
index 5983c74..9f45f21 100644
--- a/cpukit/score/include/rtems/score/schedulerpriorityimpl.h
+++ b/cpukit/score/include/rtems/score/schedulerpriorityimpl.h
@@ -25,7 +25,6 @@
 #include <rtems/score/prioritybitmapimpl.h>
 #include <rtems/score/schedulerimpl.h>
 #include <rtems/score/thread.h>
-#include <rtems/score/wkspace.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -47,18 +46,13 @@ _Scheduler_priority_Get_ready_queues( void )
  *
  * This routine initializes @a the_ready_queue for priority-based scheduling.
  */
-RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(void)
+RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(
+  Chain_Control *ready_queues
+)
 {
-  size_t         index;
-  Chain_Control *ready_queues;
-
-  /* allocate ready queue structures */
-  _Scheduler.information = _Workspace_Allocate_or_fatal_error(
-    ((size_t) PRIORITY_MAXIMUM + 1) * sizeof(Chain_Control)
-  );
+  size_t index;
 
   /* initialize ready queue structures */
-  ready_queues = _Scheduler_priority_Get_ready_queues();
   for( index=0; index <= PRIORITY_MAXIMUM; index++)
     _Chain_Initialize_empty( &ready_queues[index] );
 }
diff --git a/cpukit/score/src/schedulerpriority.c b/cpukit/score/src/schedulerpriority.c
index 7314da4..ab17063 100644
--- a/cpukit/score/src/schedulerpriority.c
+++ b/cpukit/score/src/schedulerpriority.c
@@ -19,6 +19,7 @@
 #endif
 
 #include <rtems/score/schedulerpriorityimpl.h>
+#include <rtems/score/wkspace.h>
 
 /* Instantiate any global variables needed by the priority scheduler */
 volatile Priority_bit_map_Control _Priority_Major_bit_map;
@@ -27,6 +28,13 @@ Priority_bit_map_Control          _Priority_Bit_map[16] CPU_STRUCTURE_ALIGNMENT;
 
 void _Scheduler_priority_Initialize(void)
 {
-  _Scheduler_priority_Ready_queue_initialize();
+  /* allocate ready queue structures */
+  Chain_Control *ready_queues = _Workspace_Allocate_or_fatal_error(
+    ((size_t) PRIORITY_MAXIMUM + 1) * sizeof(Chain_Control)
+  );
+
+  _Scheduler_priority_Ready_queue_initialize( ready_queues );
   _Priority_bit_map_Handler_initialization();
+
+  _Scheduler.information = ready_queues;
 }
diff --git a/cpukit/score/src/schedulerpriorityallocate.c b/cpukit/score/src/schedulerpriorityallocate.c
index ec0f210..ef6322e 100644
--- a/cpukit/score/src/schedulerpriorityallocate.c
+++ b/cpukit/score/src/schedulerpriorityallocate.c
@@ -19,6 +19,7 @@
 #endif
 
 #include <rtems/score/schedulerpriority.h>
+#include <rtems/score/thread.h>
 #include <rtems/score/wkspace.h>
 
 void *_Scheduler_priority_Allocate (
-- 
1.7.7




More information about the devel mailing list