summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/src')
-rw-r--r--cpukit/score/src/scheduler.c9
-rw-r--r--cpukit/score/src/schedulercbs.c10
-rw-r--r--cpukit/score/src/schedulercbsallocate.c4
-rw-r--r--cpukit/score/src/schedulercbsattachthread.c8
-rw-r--r--cpukit/score/src/schedulercbscleanup.c3
-rw-r--r--cpukit/score/src/schedulercbscreateserver.c11
-rw-r--r--cpukit/score/src/schedulercbsdestroyserver.c7
-rw-r--r--cpukit/score/src/schedulercbsdetachthread.c6
-rw-r--r--cpukit/score/src/schedulercbsgetapprovedbudget.c4
-rw-r--r--cpukit/score/src/schedulercbsgetexecutiontime.c10
-rw-r--r--cpukit/score/src/schedulercbsgetparameters.c4
-rw-r--r--cpukit/score/src/schedulercbsgetremainingbudget.c8
-rw-r--r--cpukit/score/src/schedulercbsgetserverid.c4
-rw-r--r--cpukit/score/src/schedulercbsreleasejob.c6
-rw-r--r--cpukit/score/src/schedulercbssetparameters.c4
-rw-r--r--cpukit/score/src/schedulercbsunblock.c4
-rw-r--r--cpukit/score/src/schedulerdefaultallocatefree.c8
-rw-r--r--cpukit/score/src/schedulerdefaultgetaffinity.c8
-rw-r--r--cpukit/score/src/schedulerdefaultreleasejob.c6
-rw-r--r--cpukit/score/src/schedulerdefaultsetaffinity.c8
-rw-r--r--cpukit/score/src/schedulerdefaultstartidle.c6
-rw-r--r--cpukit/score/src/schedulerdefaulttick.c6
-rw-r--r--cpukit/score/src/schedulerdefaultupdate.c4
-rw-r--r--cpukit/score/src/scheduleredf.c15
-rw-r--r--cpukit/score/src/scheduleredfallocate.c4
-rw-r--r--cpukit/score/src/scheduleredfblock.c4
-rw-r--r--cpukit/score/src/scheduleredfenqueue.c10
-rw-r--r--cpukit/score/src/scheduleredfenqueuefirst.c4
-rw-r--r--cpukit/score/src/scheduleredfextract.c10
-rw-r--r--cpukit/score/src/scheduleredffree.c4
-rw-r--r--cpukit/score/src/scheduleredfreleasejob.c6
-rw-r--r--cpukit/score/src/scheduleredfschedule.c4
-rw-r--r--cpukit/score/src/scheduleredfunblock.c4
-rw-r--r--cpukit/score/src/scheduleredfupdate.c4
-rw-r--r--cpukit/score/src/scheduleredfyield.c14
-rw-r--r--cpukit/score/src/schedulerpriority.c13
-rw-r--r--cpukit/score/src/schedulerpriorityaffinitysmp.c20
-rw-r--r--cpukit/score/src/schedulerpriorityallocate.c4
-rw-r--r--cpukit/score/src/schedulerpriorityblock.c4
-rw-r--r--cpukit/score/src/schedulerpriorityenqueue.c10
-rw-r--r--cpukit/score/src/schedulerpriorityenqueuefirst.c10
-rw-r--r--cpukit/score/src/schedulerpriorityextract.c6
-rw-r--r--cpukit/score/src/schedulerpriorityfree.c6
-rw-r--r--cpukit/score/src/schedulerpriorityschedule.c6
-rw-r--r--cpukit/score/src/schedulerprioritysmp.c97
-rw-r--r--cpukit/score/src/schedulerpriorityunblock.c10
-rw-r--r--cpukit/score/src/schedulerpriorityupdate.c12
-rw-r--r--cpukit/score/src/schedulerpriorityyield.c6
-rw-r--r--cpukit/score/src/schedulersimple.c13
-rw-r--r--cpukit/score/src/schedulersimpleblock.c4
-rw-r--r--cpukit/score/src/schedulersimpleenqueue.c10
-rw-r--r--cpukit/score/src/schedulersimpleenqueuefirst.c7
-rw-r--r--cpukit/score/src/schedulersimpleextract.c8
-rw-r--r--cpukit/score/src/schedulersimplereadyqueueenqueue.c10
-rw-r--r--cpukit/score/src/schedulersimplereadyqueueenqueuefirst.c10
-rw-r--r--cpukit/score/src/schedulersimpleschedule.c4
-rw-r--r--cpukit/score/src/schedulersimplesmp.c86
-rw-r--r--cpukit/score/src/schedulersimpleunblock.c8
-rw-r--r--cpukit/score/src/schedulersimpleyield.c5
-rw-r--r--cpukit/score/src/threadchangepriority.c6
-rw-r--r--cpukit/score/src/threadrestart.c8
61 files changed, 288 insertions, 326 deletions
diff --git a/cpukit/score/src/scheduler.c b/cpukit/score/src/scheduler.c
index 7705472b35..ef5a0a9c00 100644
--- a/cpukit/score/src/scheduler.c
+++ b/cpukit/score/src/scheduler.c
@@ -22,5 +22,12 @@
void _Scheduler_Handler_initialization(void)
{
- (*_Scheduler.Operations.initialize)();
+ size_t n = _Scheduler_Count;
+ size_t i;
+
+ for ( i = 0 ; i < n ; ++i ) {
+ const Scheduler_Control *scheduler = &_Scheduler_Table[ i ];
+
+ ( *scheduler->Operations.initialize )( scheduler );
+ }
}
diff --git a/cpukit/score/src/schedulercbs.c b/cpukit/score/src/schedulercbs.c
index c427c5254f..54312b2ca6 100644
--- a/cpukit/score/src/schedulercbs.c
+++ b/cpukit/score/src/schedulercbs.c
@@ -22,8 +22,6 @@
#include <rtems/score/threadimpl.h>
#include <rtems/score/wkspace.h>
-Scheduler_CBS_Server **_Scheduler_CBS_Server_list;
-
void _Scheduler_CBS_Budget_callout(
Thread_Control *the_thread
)
@@ -52,13 +50,5 @@ void _Scheduler_CBS_Budget_callout(
int _Scheduler_CBS_Initialize(void)
{
- unsigned int i;
- _Scheduler_CBS_Server_list = (Scheduler_CBS_Server **) _Workspace_Allocate(
- _Scheduler_CBS_Maximum_servers * sizeof(Scheduler_CBS_Server*) );
- if ( !_Scheduler_CBS_Server_list )
- return SCHEDULER_CBS_ERROR_NO_MEMORY;
- for (i = 0; i<_Scheduler_CBS_Maximum_servers; i++) {
- _Scheduler_CBS_Server_list[i] = NULL;
- }
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsallocate.c b/cpukit/score/src/schedulercbsallocate.c
index 908ea90933..1190b84254 100644
--- a/cpukit/score/src/schedulercbsallocate.c
+++ b/cpukit/score/src/schedulercbsallocate.c
@@ -26,8 +26,8 @@
#include <rtems/score/wkspace.h>
void *_Scheduler_CBS_Allocate(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
void *sched;
diff --git a/cpukit/score/src/schedulercbsattachthread.c b/cpukit/score/src/schedulercbsattachthread.c
index ad9279176c..43bf92da66 100644
--- a/cpukit/score/src/schedulercbsattachthread.c
+++ b/cpukit/score/src/schedulercbsattachthread.c
@@ -33,11 +33,11 @@ int _Scheduler_CBS_Attach_thread (
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
/* Server is not valid. */
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
/* Server is already attached to a thread. */
- if ( _Scheduler_CBS_Server_list[server_id]->task_id != -1 )
+ if ( _Scheduler_CBS_Server_list[server_id].task_id != -1 )
return SCHEDULER_CBS_ERROR_FULL;
the_thread = _Thread_Get(task_id, &location);
@@ -53,8 +53,8 @@ int _Scheduler_CBS_Attach_thread (
return SCHEDULER_CBS_ERROR_FULL;
}
- _Scheduler_CBS_Server_list[server_id]->task_id = task_id;
- sched_info->cbs_server = (void *) _Scheduler_CBS_Server_list[server_id];
+ _Scheduler_CBS_Server_list[server_id].task_id = task_id;
+ sched_info->cbs_server = &_Scheduler_CBS_Server_list[server_id];
the_thread->budget_callout = _Scheduler_CBS_Budget_callout;
the_thread->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_CALLOUT;
diff --git a/cpukit/score/src/schedulercbscleanup.c b/cpukit/score/src/schedulercbscleanup.c
index 795b16a5dc..01dd0d8317 100644
--- a/cpukit/score/src/schedulercbscleanup.c
+++ b/cpukit/score/src/schedulercbscleanup.c
@@ -26,9 +26,8 @@ int _Scheduler_CBS_Cleanup (void)
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
- if ( _Scheduler_CBS_Server_list[ i ] )
+ if ( _Scheduler_CBS_Server_list[ i ].initialized )
_Scheduler_CBS_Destroy_server( i );
}
- _Workspace_Free( _Scheduler_CBS_Server_list );
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbscreateserver.c b/cpukit/score/src/schedulercbscreateserver.c
index 85ed6d4f96..486329c710 100644
--- a/cpukit/score/src/schedulercbscreateserver.c
+++ b/cpukit/score/src/schedulercbscreateserver.c
@@ -19,7 +19,6 @@
#endif
#include <rtems/score/schedulercbs.h>
-#include <rtems/score/wkspace.h>
int _Scheduler_CBS_Create_server (
Scheduler_CBS_Parameters *params,
@@ -37,7 +36,7 @@ int _Scheduler_CBS_Create_server (
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
- if ( !_Scheduler_CBS_Server_list[i] )
+ if ( !_Scheduler_CBS_Server_list[i].initialized )
break;
}
@@ -45,14 +44,10 @@ int _Scheduler_CBS_Create_server (
return SCHEDULER_CBS_ERROR_FULL;
*server_id = i;
- _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)
- _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );
- the_server = _Scheduler_CBS_Server_list[*server_id];
- if ( !the_server )
- return SCHEDULER_CBS_ERROR_NO_MEMORY;
-
+ the_server = &_Scheduler_CBS_Server_list[*server_id];
the_server->parameters = *params;
the_server->task_id = -1;
the_server->cbs_budget_overrun = budget_overrun_callback;
+ the_server->initialized = true;
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsdestroyserver.c b/cpukit/score/src/schedulercbsdestroyserver.c
index d8885a89c6..2407a48bf8 100644
--- a/cpukit/score/src/schedulercbsdestroyserver.c
+++ b/cpukit/score/src/schedulercbsdestroyserver.c
@@ -32,13 +32,12 @@ int _Scheduler_CBS_Destroy_server (
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- if ( (tid = _Scheduler_CBS_Server_list[server_id]->task_id) != -1 )
+ if ( (tid = _Scheduler_CBS_Server_list[server_id].task_id) != -1 )
ret = _Scheduler_CBS_Detach_thread ( server_id, tid );
- _Workspace_Free( _Scheduler_CBS_Server_list[server_id] );
- _Scheduler_CBS_Server_list[server_id] = NULL;
+ _Scheduler_CBS_Server_list[server_id].initialized = false;
return ret;
}
diff --git a/cpukit/score/src/schedulercbsdetachthread.c b/cpukit/score/src/schedulercbsdetachthread.c
index f8a5e32c7f..0f77cdf10e 100644
--- a/cpukit/score/src/schedulercbsdetachthread.c
+++ b/cpukit/score/src/schedulercbsdetachthread.c
@@ -34,16 +34,16 @@ int _Scheduler_CBS_Detach_thread (
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
/* Server is not valid. */
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
/* Thread and server are not attached. */
- if ( _Scheduler_CBS_Server_list[server_id]->task_id != task_id )
+ if ( _Scheduler_CBS_Server_list[server_id].task_id != task_id )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
the_thread = _Thread_Get(task_id, &location);
/* The routine _Thread_Get may disable dispatch and not enable again. */
if ( the_thread ) {
- _Scheduler_CBS_Server_list[server_id]->task_id = -1;
+ _Scheduler_CBS_Server_list[server_id].task_id = -1;
sched_info = (Scheduler_CBS_Per_thread *) the_thread->scheduler_info;
sched_info->cbs_server = NULL;
diff --git a/cpukit/score/src/schedulercbsgetapprovedbudget.c b/cpukit/score/src/schedulercbsgetapprovedbudget.c
index 560849ec3c..d1ea5ce0ed 100644
--- a/cpukit/score/src/schedulercbsgetapprovedbudget.c
+++ b/cpukit/score/src/schedulercbsgetapprovedbudget.c
@@ -30,9 +30,9 @@ int _Scheduler_CBS_Get_approved_budget (
{
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- *approved_budget = _Scheduler_CBS_Server_list[server_id]->parameters.budget;
+ *approved_budget = _Scheduler_CBS_Server_list[server_id].parameters.budget;
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsgetexecutiontime.c b/cpukit/score/src/schedulercbsgetexecutiontime.c
index 325c7598f6..ee139e640d 100644
--- a/cpukit/score/src/schedulercbsgetexecutiontime.c
+++ b/cpukit/score/src/schedulercbsgetexecutiontime.c
@@ -33,25 +33,25 @@ int _Scheduler_CBS_Get_execution_time (
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- if ( _Scheduler_CBS_Server_list[server_id]->task_id == -1 ) {
+ if ( _Scheduler_CBS_Server_list[server_id].task_id == -1 ) {
*exec_time = 0;
return SCHEDULER_CBS_OK;
}
the_thread = _Thread_Get(
- _Scheduler_CBS_Server_list[server_id]->task_id,
+ _Scheduler_CBS_Server_list[server_id].task_id,
&location
);
/* The routine _Thread_Get may disable dispatch and not enable again. */
if ( the_thread ) {
- *exec_time = _Scheduler_CBS_Server_list[server_id]->parameters.budget -
+ *exec_time = _Scheduler_CBS_Server_list[server_id].parameters.budget -
the_thread->cpu_time_budget;
_Objects_Put( &the_thread->Object );
}
else {
- *exec_time = _Scheduler_CBS_Server_list[server_id]->parameters.budget;
+ *exec_time = _Scheduler_CBS_Server_list[server_id].parameters.budget;
}
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsgetparameters.c b/cpukit/score/src/schedulercbsgetparameters.c
index 12c9489f23..18dbc0ef1a 100644
--- a/cpukit/score/src/schedulercbsgetparameters.c
+++ b/cpukit/score/src/schedulercbsgetparameters.c
@@ -30,9 +30,9 @@ int _Scheduler_CBS_Get_parameters (
{
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- *params = _Scheduler_CBS_Server_list[server_id]->parameters;
+ *params = _Scheduler_CBS_Server_list[server_id].parameters;
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsgetremainingbudget.c b/cpukit/score/src/schedulercbsgetremainingbudget.c
index df4709dfb0..a031ba4e87 100644
--- a/cpukit/score/src/schedulercbsgetremainingbudget.c
+++ b/cpukit/score/src/schedulercbsgetremainingbudget.c
@@ -31,15 +31,15 @@ int _Scheduler_CBS_Get_remaining_budget (
if ( server_id >= _Scheduler_CBS_Maximum_servers )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- if ( _Scheduler_CBS_Server_list[server_id]->task_id == -1 ) {
- *remaining_budget = _Scheduler_CBS_Server_list[server_id]->parameters.budget;
+ if ( _Scheduler_CBS_Server_list[server_id].task_id == -1 ) {
+ *remaining_budget = _Scheduler_CBS_Server_list[server_id].parameters.budget;
return SCHEDULER_CBS_OK;
}
the_thread = _Thread_Get(
- _Scheduler_CBS_Server_list[server_id]->task_id,
+ _Scheduler_CBS_Server_list[server_id].task_id,
&location
);
/* The routine _Thread_Get may disable dispatch and not enable again. */
diff --git a/cpukit/score/src/schedulercbsgetserverid.c b/cpukit/score/src/schedulercbsgetserverid.c
index 0711baee11..235b559d34 100644
--- a/cpukit/score/src/schedulercbsgetserverid.c
+++ b/cpukit/score/src/schedulercbsgetserverid.c
@@ -30,8 +30,8 @@ int _Scheduler_CBS_Get_server_id (
{
unsigned int i;
for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {
- if ( _Scheduler_CBS_Server_list[i] &&
- _Scheduler_CBS_Server_list[i]->task_id == task_id ) {
+ if ( _Scheduler_CBS_Server_list[i].initialized &&
+ _Scheduler_CBS_Server_list[i].task_id == task_id ) {
*server_id = i;
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsreleasejob.c b/cpukit/score/src/schedulercbsreleasejob.c
index f4fc1a817c..c5ac572a61 100644
--- a/cpukit/score/src/schedulercbsreleasejob.c
+++ b/cpukit/score/src/schedulercbsreleasejob.c
@@ -24,9 +24,9 @@
#include <rtems/score/watchdogimpl.h>
void _Scheduler_CBS_Release_job(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- uint32_t deadline
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread,
+ uint32_t deadline
)
{
Priority_Control new_priority;
diff --git a/cpukit/score/src/schedulercbssetparameters.c b/cpukit/score/src/schedulercbssetparameters.c
index 8c452327ed..6ddaf3d272 100644
--- a/cpukit/score/src/schedulercbssetparameters.c
+++ b/cpukit/score/src/schedulercbssetparameters.c
@@ -38,9 +38,9 @@ int _Scheduler_CBS_Set_parameters (
params->deadline >= SCHEDULER_EDF_PRIO_MSB )
return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;
- if ( !_Scheduler_CBS_Server_list[server_id] )
+ if ( !_Scheduler_CBS_Server_list[server_id].initialized )
return SCHEDULER_CBS_ERROR_NOSERVER;
- _Scheduler_CBS_Server_list[server_id]->parameters = *params;
+ _Scheduler_CBS_Server_list[server_id].parameters = *params;
return SCHEDULER_CBS_OK;
}
diff --git a/cpukit/score/src/schedulercbsunblock.c b/cpukit/score/src/schedulercbsunblock.c
index 11465f2ba2..030cc85c68 100644
--- a/cpukit/score/src/schedulercbsunblock.c
+++ b/cpukit/score/src/schedulercbsunblock.c
@@ -25,8 +25,8 @@
#include <rtems/score/watchdogimpl.h>
void _Scheduler_CBS_Unblock(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
Scheduler_CBS_Per_thread *sched_info;
diff --git a/cpukit/score/src/schedulerdefaultallocatefree.c b/cpukit/score/src/schedulerdefaultallocatefree.c
index 7ffade29e5..4efed5bad8 100644
--- a/cpukit/score/src/schedulerdefaultallocatefree.c
+++ b/cpukit/score/src/schedulerdefaultallocatefree.c
@@ -22,8 +22,8 @@
#include <rtems/score/scheduler.h>
void *_Scheduler_default_Allocate(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
( void ) scheduler;
@@ -33,8 +33,8 @@ void *_Scheduler_default_Allocate(
}
void _Scheduler_default_Free(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
( void ) scheduler;
diff --git a/cpukit/score/src/schedulerdefaultgetaffinity.c b/cpukit/score/src/schedulerdefaultgetaffinity.c
index b4a1d1aa9a..367fc25293 100644
--- a/cpukit/score/src/schedulerdefaultgetaffinity.c
+++ b/cpukit/score/src/schedulerdefaultgetaffinity.c
@@ -23,10 +23,10 @@
#include <rtems/score/cpusetimpl.h>
bool _Scheduler_default_Get_affinity(
- Scheduler_Control *scheduler,
- Thread_Control *thread,
- size_t cpusetsize,
- cpu_set_t *cpuset
+ const Scheduler_Control *scheduler,
+ Thread_Control *thread,
+ size_t cpusetsize,
+ cpu_set_t *cpuset
)
{
const CPU_set_Control *ctl;
diff --git a/cpukit/score/src/schedulerdefaultreleasejob.c b/cpukit/score/src/schedulerdefaultreleasejob.c
index 10ebf84874..90593abc44 100644
--- a/cpukit/score/src/schedulerdefaultreleasejob.c
+++ b/cpukit/score/src/schedulerdefaultreleasejob.c
@@ -22,9 +22,9 @@
#include <rtems/score/scheduler.h>
void _Scheduler_default_Release_job(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- uint32_t deadline
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread,
+ uint32_t deadline
)
{
( void ) scheduler;
diff --git a/cpukit/score/src/schedulerdefaultsetaffinity.c b/cpukit/score/src/schedulerdefaultsetaffinity.c
index 1115f3a0db..33be12b286 100644
--- a/cpukit/score/src/schedulerdefaultsetaffinity.c
+++ b/cpukit/score/src/schedulerdefaultsetaffinity.c
@@ -23,10 +23,10 @@
#include <rtems/score/cpusetimpl.h>
bool _Scheduler_default_Set_affinity(
- Scheduler_Control *scheduler,
- Thread_Control *thread,
- size_t cpusetsize,
- const cpu_set_t *cpuset
+ const Scheduler_Control *scheduler,
+ Thread_Control *thread,
+ size_t cpusetsize,
+ const cpu_set_t *cpuset
)
{
(void) scheduler;
diff --git a/cpukit/score/src/schedulerdefaultstartidle.c b/cpukit/score/src/schedulerdefaultstartidle.c
index caddb7f2a2..eeed928160 100644
--- a/cpukit/score/src/schedulerdefaultstartidle.c
+++ b/cpukit/score/src/schedulerdefaultstartidle.c
@@ -13,9 +13,9 @@
#include <rtems/score/schedulerimpl.h>
void _Scheduler_default_Start_idle(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- Per_CPU_Control *cpu
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread,
+ Per_CPU_Control *cpu
)
{
(void) cpu;
diff --git a/cpukit/score/src/schedulerdefaulttick.c b/cpukit/score/src/schedulerdefaulttick.c
index 3b3d9a0cbd..6e7ed376e3 100644
--- a/cpukit/score/src/schedulerdefaulttick.c
+++ b/cpukit/score/src/schedulerdefaulttick.c
@@ -25,8 +25,8 @@
#include <rtems/config.h>
static void _Scheduler_default_Tick_for_executing(
- Scheduler_Control *scheduler,
- Thread_Control *executing
+ const Scheduler_Control *scheduler,
+ Thread_Control *executing
)
{
#ifdef __RTEMS_USE_TICKS_FOR_STATISTICS__
@@ -84,7 +84,7 @@ static void _Scheduler_default_Tick_for_executing(
}
}
-void _Scheduler_default_Tick( Scheduler_Control *scheduler )
+void _Scheduler_default_Tick( const Scheduler_Control *scheduler )
{
uint32_t processor_count = _SMP_Get_processor_count();
uint32_t processor;
diff --git a/cpukit/score/src/schedulerdefaultupdate.c b/cpukit/score/src/schedulerdefaultupdate.c
index c1b62b27d5..28d7e1d9a1 100644
--- a/cpukit/score/src/schedulerdefaultupdate.c
+++ b/cpukit/score/src/schedulerdefaultupdate.c
@@ -22,8 +22,8 @@
#include <rtems/score/scheduler.h>
void _Scheduler_default_Update(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
( void ) scheduler;
diff --git a/cpukit/score/src/scheduleredf.c b/cpukit/score/src/scheduleredf.c
index 502a2a1d4a..4d1aa62d08 100644
--- a/cpukit/score/src/scheduleredf.c
+++ b/cpukit/score/src/scheduleredf.c
@@ -18,10 +18,7 @@
#include "config.h"
#endif
-#include <rtems/score/scheduleredf.h>
-#include <rtems/score/schedulerimpl.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/wkspace.h>
+#include <rtems/score/scheduleredfimpl.h>
static int _Scheduler_EDF_RBTree_compare_function
(
@@ -41,16 +38,14 @@ static int _Scheduler_EDF_RBTree_compare_function
return (-1)*_Scheduler_EDF_Priority_compare(value1, value2);
}
-void _Scheduler_EDF_Initialize(void)
+void _Scheduler_EDF_Initialize( const Scheduler_Control *scheduler )
{
- Scheduler_EDF_Control *scheduler =
- _Workspace_Allocate_or_fatal_error( sizeof( *scheduler ) );
+ Scheduler_EDF_Context *context =
+ _Scheduler_EDF_Get_context( scheduler );
_RBTree_Initialize_empty(
- &scheduler->Ready,
+ &context->Ready,
_Scheduler_EDF_RBTree_compare_function,
0
);
-
- _Scheduler.information = scheduler;
}
diff --git a/cpukit/score/src/scheduleredfallocate.c b/cpukit/score/src/scheduleredfallocate.c
index 73df5b88e2..68ae12450c 100644
--- a/cpukit/score/src/scheduleredfallocate.c
+++ b/cpukit/score/src/scheduleredfallocate.c
@@ -25,8 +25,8 @@
#include <rtems/score/wkspace.h>
void *_Scheduler_EDF_Allocate(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
void *sched;
diff --git a/cpukit/score/src/scheduleredfblock.c b/cpukit/score/src/scheduleredfblock.c
index 9ea5fc9a3f..aaa9c127b2 100644
--- a/cpukit/score/src/scheduleredfblock.c
+++ b/cpukit/score/src/scheduleredfblock.c
@@ -22,8 +22,8 @@
#include <rtems/score/scheduleredfimpl.h>
void _Scheduler_EDF_Block(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_Generic_block(
diff --git a/cpukit/score/src/scheduleredfenqueue.c b/cpukit/score/src/scheduleredfenqueue.c
index 2e7365b117..38e67eb7a7 100644
--- a/cpukit/score/src/scheduleredfenqueue.c
+++ b/cpukit/score/src/scheduleredfenqueue.c
@@ -21,16 +21,16 @@
#include <rtems/score/scheduleredfimpl.h>
void _Scheduler_EDF_Enqueue(
- Scheduler_Control *scheduler_base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_EDF_Control *scheduler =
- _Scheduler_EDF_Self_from_base( scheduler_base );
+ Scheduler_EDF_Context *context =
+ _Scheduler_EDF_Get_context( scheduler );
Scheduler_EDF_Per_thread *sched_info =
(Scheduler_EDF_Per_thread*) the_thread->scheduler_info;
RBTree_Node *node = &(sched_info->Node);
- _RBTree_Insert( &scheduler->Ready, node );
+ _RBTree_Insert( &context->Ready, node );
sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_YES;
}
diff --git a/cpukit/score/src/scheduleredfenqueuefirst.c b/cpukit/score/src/scheduleredfenqueuefirst.c
index bcf70b4752..aafc9b4a21 100644
--- a/cpukit/score/src/scheduleredfenqueuefirst.c
+++ b/cpukit/score/src/scheduleredfenqueuefirst.c
@@ -24,8 +24,8 @@
#include <rtems/score/scheduleredf.h>
void _Scheduler_EDF_Enqueue_first(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_EDF_Enqueue( scheduler, the_thread );
diff --git a/cpukit/score/src/scheduleredfextract.c b/cpukit/score/src/scheduleredfextract.c
index ec634e0dfa..02c47afb06 100644
--- a/cpukit/score/src/scheduleredfextract.c
+++ b/cpukit/score/src/scheduleredfextract.c
@@ -21,16 +21,16 @@
#include <rtems/score/scheduleredfimpl.h>
void _Scheduler_EDF_Extract(
- Scheduler_Control *scheduler_base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_EDF_Control *scheduler =
- _Scheduler_EDF_Self_from_base( scheduler_base );
+ Scheduler_EDF_Context *context =
+ _Scheduler_EDF_Get_context( scheduler );
Scheduler_EDF_Per_thread *sched_info =
(Scheduler_EDF_Per_thread*) the_thread->scheduler_info;
RBTree_Node *node = &(sched_info->Node);
- _RBTree_Extract( &scheduler->Ready, node );
+ _RBTree_Extract( &context->Ready, node );
sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY;
}
diff --git a/cpukit/score/src/scheduleredffree.c b/cpukit/score/src/scheduleredffree.c
index d9493cc5ac..3529ac9c41 100644
--- a/cpukit/score/src/scheduleredffree.c
+++ b/cpukit/score/src/scheduleredffree.c
@@ -26,8 +26,8 @@
#include <rtems/score/wkspace.h>
void _Scheduler_EDF_Free(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
(void) scheduler;
diff --git a/cpukit/score/src/scheduleredfreleasejob.c b/cpukit/score/src/scheduleredfreleasejob.c
index 37ff2d5c06..6c1b642890 100644
--- a/cpukit/score/src/scheduleredfreleasejob.c
+++ b/cpukit/score/src/scheduleredfreleasejob.c
@@ -23,9 +23,9 @@
#include <rtems/score/watchdogimpl.h>
void _Scheduler_EDF_Release_job(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread,
- uint32_t deadline
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread,
+ uint32_t deadline
)
{
Priority_Control new_priority;
diff --git a/cpukit/score/src/scheduleredfschedule.c b/cpukit/score/src/scheduleredfschedule.c
index f7acde3872..7840eed2dc 100644
--- a/cpukit/score/src/scheduleredfschedule.c
+++ b/cpukit/score/src/scheduleredfschedule.c
@@ -21,8 +21,8 @@
#include <rtems/score/scheduleredfimpl.h>
void _Scheduler_EDF_Schedule(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_EDF_Schedule_body( scheduler, the_thread, false );
diff --git a/cpukit/score/src/scheduleredfunblock.c b/cpukit/score/src/scheduleredfunblock.c
index 0640e8c172..7418b64e6a 100644
--- a/cpukit/score/src/scheduleredfunblock.c
+++ b/cpukit/score/src/scheduleredfunblock.c
@@ -23,8 +23,8 @@
#include <rtems/score/thread.h>
void _Scheduler_EDF_Unblock(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_EDF_Enqueue( scheduler, the_thread);
diff --git a/cpukit/score/src/scheduleredfupdate.c b/cpukit/score/src/scheduleredfupdate.c
index 3069068cee..88d6d9d7d4 100644
--- a/cpukit/score/src/scheduleredfupdate.c
+++ b/cpukit/score/src/scheduleredfupdate.c
@@ -26,8 +26,8 @@
#include <rtems/score/thread.h>
void _Scheduler_EDF_Update(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
Scheduler_EDF_Per_thread *sched_info =
diff --git a/cpukit/score/src/scheduleredfyield.c b/cpukit/score/src/scheduleredfyield.c
index 5b14cade4b..8f8786ad1d 100644
--- a/cpukit/score/src/scheduleredfyield.c
+++ b/cpukit/score/src/scheduleredfyield.c
@@ -22,12 +22,12 @@
#include <rtems/score/scheduleredfimpl.h>
void _Scheduler_EDF_Yield(
- Scheduler_Control *scheduler_base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_EDF_Control *scheduler =
- _Scheduler_EDF_Self_from_base( scheduler_base );
+ Scheduler_EDF_Context *context =
+ _Scheduler_EDF_Get_context( scheduler );
ISR_Level level;
Scheduler_EDF_Per_thread *thread_info =
@@ -40,12 +40,12 @@ void _Scheduler_EDF_Yield(
* The RBTree has more than one node, enqueue behind the tasks
* with the same priority in case there are such ones.
*/
- _RBTree_Extract( &scheduler->Ready, thread_node );
- _RBTree_Insert( &scheduler->Ready, thread_node );
+ _RBTree_Extract( &context->Ready, thread_node );
+ _RBTree_Insert( &context->Ready, thread_node );
_ISR_Flash( level );
- _Scheduler_EDF_Schedule_body( scheduler_base, the_thread, false );
+ _Scheduler_EDF_Schedule_body( scheduler, the_thread, false );
_ISR_Enable( level );
}
diff --git a/cpukit/score/src/schedulerpriority.c b/cpukit/score/src/schedulerpriority.c
index 9d1755d024..6dc055a536 100644
--- a/cpukit/score/src/schedulerpriority.c
+++ b/cpukit/score/src/schedulerpriority.c
@@ -21,14 +21,11 @@
#include <rtems/score/schedulerpriorityimpl.h>
#include <rtems/score/wkspace.h>
-void _Scheduler_priority_Initialize(void)
+void _Scheduler_priority_Initialize( const Scheduler_Control *scheduler )
{
- Scheduler_priority_Control *self = _Workspace_Allocate_or_fatal_error(
- sizeof( *self ) + PRIORITY_MAXIMUM * sizeof( Chain_Control )
- );
+ Scheduler_priority_Context *context =
+ _Scheduler_priority_Get_context( scheduler );
- _Priority_bit_map_Initialize( &self->Bit_map );
- _Scheduler_priority_Ready_queue_initialize( &self->Ready[ 0 ] );
-
- _Scheduler.information = self;
+ _Priority_bit_map_Initialize( &context->Bit_map );
+ _Scheduler_priority_Ready_queue_initialize( &context->Ready[ 0 ] );
}
diff --git a/cpukit/score/src/schedulerpriorityaffinitysmp.c b/cpukit/score/src/schedulerpriorityaffinitysmp.c
index 08b6e825d3..2ab12b4824 100644
--- a/cpukit/score/src/schedulerpriorityaffinitysmp.c
+++ b/cpukit/score/src/schedulerpriorityaffinitysmp.c
@@ -32,8 +32,8 @@ _Scheduler_priority_affinity_Get_scheduler_info( Thread_Control *thread )
}
void * _Scheduler_priority_affinity_SMP_Allocate(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
Scheduler_priority_affinity_SMP_Per_thread *info =
@@ -48,10 +48,10 @@ void * _Scheduler_priority_affinity_SMP_Allocate(
}
bool _Scheduler_priority_affinity_SMP_Get_affinity(
- Scheduler_Control *scheduler,
- Thread_Control *thread,
- size_t cpusetsize,
- cpu_set_t *cpuset
+ const Scheduler_Control *scheduler,
+ Thread_Control *thread,
+ size_t cpusetsize,
+ cpu_set_t *cpuset
)
{
Scheduler_priority_affinity_SMP_Per_thread *info =
@@ -68,10 +68,10 @@ bool _Scheduler_priority_affinity_SMP_Get_affinity(
}
bool _Scheduler_priority_affinity_SMP_Set_affinity(
- Scheduler_Control *scheduler,
- Thread_Control *thread,
- size_t cpusetsize,
- cpu_set_t *cpuset
+ const Scheduler_Control *scheduler,
+ Thread_Control *thread,
+ size_t cpusetsize,
+ cpu_set_t *cpuset
)
{
Scheduler_priority_affinity_SMP_Per_thread *info =
diff --git a/cpukit/score/src/schedulerpriorityallocate.c b/cpukit/score/src/schedulerpriorityallocate.c
index 2225d3ddfc..32feabb97b 100644
--- a/cpukit/score/src/schedulerpriorityallocate.c
+++ b/cpukit/score/src/schedulerpriorityallocate.c
@@ -23,8 +23,8 @@
#include <rtems/score/wkspace.h>
void *_Scheduler_priority_Allocate (
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
Scheduler_priority_Per_thread *sched_info_of_thread =
diff --git a/cpukit/score/src/schedulerpriorityblock.c b/cpukit/score/src/schedulerpriorityblock.c
index 02d73873ab..ba3c825322 100644
--- a/cpukit/score/src/schedulerpriorityblock.c
+++ b/cpukit/score/src/schedulerpriorityblock.c
@@ -23,8 +23,8 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Block(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_Generic_block(
diff --git a/cpukit/score/src/schedulerpriorityenqueue.c b/cpukit/score/src/schedulerpriorityenqueue.c
index 9d62c2ccee..e3f2be6061 100644
--- a/cpukit/score/src/schedulerpriorityenqueue.c
+++ b/cpukit/score/src/schedulerpriorityenqueue.c
@@ -21,12 +21,12 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Enqueue(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_priority_Control *scheduler =
- _Scheduler_priority_Self_from_base( base );
+ Scheduler_priority_Context *context =
+ _Scheduler_priority_Get_context( scheduler );
- _Scheduler_priority_Ready_queue_enqueue( the_thread, &scheduler->Bit_map );
+ _Scheduler_priority_Ready_queue_enqueue( the_thread, &context->Bit_map );
}
diff --git a/cpukit/score/src/schedulerpriorityenqueuefirst.c b/cpukit/score/src/schedulerpriorityenqueuefirst.c
index 1f0605d70b..0d197065a0 100644
--- a/cpukit/score/src/schedulerpriorityenqueuefirst.c
+++ b/cpukit/score/src/schedulerpriorityenqueuefirst.c
@@ -21,16 +21,16 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Enqueue_first(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_priority_Control *self =
- _Scheduler_priority_Self_from_base( base );
+ Scheduler_priority_Context *context =
+ _Scheduler_priority_Get_context( scheduler );
_Scheduler_priority_Ready_queue_enqueue_first(
the_thread,
- &self->Bit_map
+ &context->Bit_map
);
}
diff --git a/cpukit/score/src/schedulerpriorityextract.c b/cpukit/score/src/schedulerpriorityextract.c
index 492c537a73..84dbaa4280 100644
--- a/cpukit/score/src/schedulerpriorityextract.c
+++ b/cpukit/score/src/schedulerpriorityextract.c
@@ -22,9 +22,9 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Extract(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- _Scheduler_priority_Extract_body( base, the_thread );
+ _Scheduler_priority_Extract_body( scheduler, the_thread );
}
diff --git a/cpukit/score/src/schedulerpriorityfree.c b/cpukit/score/src/schedulerpriorityfree.c
index 5529f78d59..b2daa26493 100644
--- a/cpukit/score/src/schedulerpriorityfree.c
+++ b/cpukit/score/src/schedulerpriorityfree.c
@@ -25,11 +25,11 @@
#include <rtems/score/wkspace.h>
void _Scheduler_priority_Free (
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- (void) base;
+ (void) scheduler;
_Workspace_Free( the_thread->scheduler_info );
}
diff --git a/cpukit/score/src/schedulerpriorityschedule.c b/cpukit/score/src/schedulerpriorityschedule.c
index aa6c09a505..ffc1351bba 100644
--- a/cpukit/score/src/schedulerpriorityschedule.c
+++ b/cpukit/score/src/schedulerpriorityschedule.c
@@ -21,9 +21,9 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Schedule(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- _Scheduler_priority_Schedule_body( base, the_thread, false );
+ _Scheduler_priority_Schedule_body( scheduler, the_thread, false );
}
diff --git a/cpukit/score/src/schedulerprioritysmp.c b/cpukit/score/src/schedulerprioritysmp.c
index 5361023b4a..025d9601fd 100644
--- a/cpukit/score/src/schedulerprioritysmp.c
+++ b/cpukit/score/src/schedulerprioritysmp.c
@@ -29,40 +29,37 @@
#include <rtems/score/schedulersmpimpl.h>
#include <rtems/score/wkspace.h>
-static Scheduler_priority_SMP_Control *
-_Scheduler_priority_SMP_Self_from_base( Scheduler_Control *base )
+static Scheduler_priority_SMP_Context *
+_Scheduler_priority_SMP_Get_context( const Scheduler_Control *scheduler )
{
- return (Scheduler_priority_SMP_Control *) base->information;
+ return (Scheduler_priority_SMP_Context *) scheduler->context;
}
-static Scheduler_priority_SMP_Control *
-_Scheduler_priority_SMP_Self_from_SMP_base( Scheduler_SMP_Control *smp_base )
+static Scheduler_priority_SMP_Context *
+_Scheduler_priority_SMP_Self_from_SMP_base( Scheduler_SMP_Context *smp_base )
{
- return (Scheduler_priority_SMP_Control *)
+ return (Scheduler_priority_SMP_Context *)
( (char *) smp_base
- - offsetof( Scheduler_priority_SMP_Control, Base ) );
+ - offsetof( Scheduler_priority_SMP_Context, Base ) );
}
-void _Scheduler_priority_SMP_Initialize( void )
+void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler )
{
- Scheduler_priority_SMP_Control *self = _Workspace_Allocate_or_fatal_error(
- sizeof( *self ) + PRIORITY_MAXIMUM * sizeof( Chain_Control )
- );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_SMP_Initialize( &self->Base );
_Priority_bit_map_Initialize( &self->Bit_map );
_Scheduler_priority_Ready_queue_initialize( &self->Ready[ 0 ] );
-
- _Scheduler.information = self;
}
void _Scheduler_priority_SMP_Update(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_priority_Update_body(
thread,
@@ -72,10 +69,10 @@ void _Scheduler_priority_SMP_Update(
}
static Thread_Control *_Scheduler_priority_SMP_Get_highest_ready(
- Scheduler_SMP_Control *smp_base
+ Scheduler_SMP_Context *smp_base
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
Thread_Control *highest_ready = NULL;
@@ -90,11 +87,11 @@ static Thread_Control *_Scheduler_priority_SMP_Get_highest_ready(
}
static void _Scheduler_priority_SMP_Move_from_scheduled_to_ready(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *scheduled_to_ready
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
_Chain_Extract_unprotected( &scheduled_to_ready->Object.Node );
@@ -105,11 +102,11 @@ static void _Scheduler_priority_SMP_Move_from_scheduled_to_ready(
}
static void _Scheduler_priority_SMP_Move_from_ready_to_scheduled(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *ready_to_scheduled
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
_Scheduler_priority_Ready_queue_extract(
@@ -123,33 +120,33 @@ static void _Scheduler_priority_SMP_Move_from_ready_to_scheduled(
}
static void _Scheduler_priority_SMP_Insert_ready_lifo(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
_Scheduler_priority_Ready_queue_enqueue( thread, &self->Bit_map );
}
static void _Scheduler_priority_SMP_Insert_ready_fifo(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
_Scheduler_priority_Ready_queue_enqueue_first( thread, &self->Bit_map );
}
static void _Scheduler_priority_SMP_Do_extract(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
+ Scheduler_priority_SMP_Context *self =
_Scheduler_priority_SMP_Self_from_SMP_base( smp_base );
bool is_scheduled = thread->is_scheduled;
@@ -164,12 +161,12 @@ static void _Scheduler_priority_SMP_Do_extract(
}
void _Scheduler_priority_SMP_Block(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_SMP_Block(
&self->Base,
@@ -181,7 +178,7 @@ void _Scheduler_priority_SMP_Block(
}
static void _Scheduler_priority_SMP_Enqueue_ordered(
- Scheduler_SMP_Control *self,
+ Scheduler_SMP_Context *self,
Thread_Control *thread,
Chain_Node_order order,
Scheduler_SMP_Insert insert_ready,
@@ -201,12 +198,12 @@ static void _Scheduler_priority_SMP_Enqueue_ordered(
}
void _Scheduler_priority_SMP_Enqueue_lifo(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_priority_SMP_Enqueue_ordered(
&self->Base,
@@ -218,12 +215,12 @@ void _Scheduler_priority_SMP_Enqueue_lifo(
}
void _Scheduler_priority_SMP_Enqueue_fifo(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_priority_SMP_Enqueue_ordered(
&self->Base,
@@ -235,12 +232,12 @@ void _Scheduler_priority_SMP_Enqueue_fifo(
}
void _Scheduler_priority_SMP_Extract(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_SMP_Extract(
&self->Base,
@@ -250,7 +247,7 @@ void _Scheduler_priority_SMP_Extract(
}
void _Scheduler_priority_SMP_Yield(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
@@ -258,19 +255,19 @@ void _Scheduler_priority_SMP_Yield(
_ISR_Disable( level );
- _Scheduler_priority_SMP_Extract( base, thread );
- _Scheduler_priority_SMP_Enqueue_fifo( base, thread );
+ _Scheduler_priority_SMP_Extract( scheduler, thread );
+ _Scheduler_priority_SMP_Enqueue_fifo( scheduler, thread );
_ISR_Enable( level );
}
void _Scheduler_priority_SMP_Schedule(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_SMP_Schedule(
&self->Base,
@@ -281,13 +278,13 @@ void _Scheduler_priority_SMP_Schedule(
}
void _Scheduler_priority_SMP_Start_idle(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread,
Per_CPU_Control *cpu
)
{
- Scheduler_priority_SMP_Control *self =
- _Scheduler_priority_SMP_Self_from_base( base );
+ Scheduler_priority_SMP_Context *self =
+ _Scheduler_priority_SMP_Get_context( scheduler );
_Scheduler_SMP_Start_idle( &self->Base, thread, cpu );
}
diff --git a/cpukit/score/src/schedulerpriorityunblock.c b/cpukit/score/src/schedulerpriorityunblock.c
index c84111ca26..f5482a8229 100644
--- a/cpukit/score/src/schedulerpriorityunblock.c
+++ b/cpukit/score/src/schedulerpriorityunblock.c
@@ -23,14 +23,14 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Unblock (
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_priority_Control *self =
- _Scheduler_priority_Self_from_base( base );
+ Scheduler_priority_Context *context =
+ _Scheduler_priority_Get_context( scheduler );
- _Scheduler_priority_Ready_queue_enqueue( the_thread, &self->Bit_map );
+ _Scheduler_priority_Ready_queue_enqueue( the_thread, &context->Bit_map );
/* TODO: flash critical section? */
diff --git a/cpukit/score/src/schedulerpriorityupdate.c b/cpukit/score/src/schedulerpriorityupdate.c
index 0e7032af71..c906c346b4 100644
--- a/cpukit/score/src/schedulerpriorityupdate.c
+++ b/cpukit/score/src/schedulerpriorityupdate.c
@@ -21,16 +21,16 @@
#include <rtems/score/schedulerpriorityimpl.h>
void _Scheduler_priority_Update(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_priority_Control *self =
- _Scheduler_priority_Self_from_base( base );
+ Scheduler_priority_Context *context =
+ _Scheduler_priority_Get_context( scheduler );
_Scheduler_priority_Update_body(
the_thread,
- &self->Bit_map,
- &self->Ready[ 0 ]
+ &context->Bit_map,
+ &context->Ready[ 0 ]
);
}
diff --git a/cpukit/score/src/schedulerpriorityyield.c b/cpukit/score/src/schedulerpriorityyield.c
index 2bcefa5eb7..63b344ace7 100644
--- a/cpukit/score/src/schedulerpriorityyield.c
+++ b/cpukit/score/src/schedulerpriorityyield.c
@@ -23,8 +23,8 @@
#include <rtems/score/threadimpl.h>
void _Scheduler_priority_Yield(
- Scheduler_Control *base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
Scheduler_priority_Per_thread *sched_info_of_thread =
@@ -32,7 +32,7 @@ void _Scheduler_priority_Yield(
Chain_Control *ready_chain = sched_info_of_thread->ready_chain;
ISR_Level level;
- (void) base;
+ (void) scheduler;
_ISR_Disable( level );
if ( !_Chain_Has_only_one_node( ready_chain ) ) {
diff --git a/cpukit/score/src/schedulersimple.c b/cpukit/score/src/schedulersimple.c
index b825b29014..38fb194f44 100644
--- a/cpukit/score/src/schedulersimple.c
+++ b/cpukit/score/src/schedulersimple.c
@@ -19,16 +19,13 @@
#include "config.h"
#endif
-#include <rtems/score/schedulersimple.h>
+#include <rtems/score/schedulersimpleimpl.h>
#include <rtems/score/chainimpl.h>
-#include <rtems/score/wkspace.h>
-void _Scheduler_simple_Initialize ( void )
+void _Scheduler_simple_Initialize( const Scheduler_Control *scheduler )
{
- Scheduler_simple_Control *scheduler =
- _Workspace_Allocate_or_fatal_error( sizeof( *scheduler ) );
+ Scheduler_simple_Context *context =
+ _Scheduler_simple_Get_context( scheduler );
- _Chain_Initialize_empty( &scheduler->Ready );
-
- _Scheduler.information = scheduler;
+ _Chain_Initialize_empty( &context->Ready );
}
diff --git a/cpukit/score/src/schedulersimpleblock.c b/cpukit/score/src/schedulersimpleblock.c
index 8bfab69adf..ad409bbf61 100644
--- a/cpukit/score/src/schedulersimpleblock.c
+++ b/cpukit/score/src/schedulersimpleblock.c
@@ -22,8 +22,8 @@
#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Block(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_Generic_block(
diff --git a/cpukit/score/src/schedulersimpleenqueue.c b/cpukit/score/src/schedulersimpleenqueue.c
index b0d49920c5..5dc88948da 100644
--- a/cpukit/score/src/schedulersimpleenqueue.c
+++ b/cpukit/score/src/schedulersimpleenqueue.c
@@ -19,15 +19,11 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/chain.h>
-#include <rtems/score/isr.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/schedulersimple.h>
+#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Enqueue(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_simple_Ready_queue_enqueue( scheduler, the_thread );
diff --git a/cpukit/score/src/schedulersimpleenqueuefirst.c b/cpukit/score/src/schedulersimpleenqueuefirst.c
index b9005a778b..2ea0a15917 100644
--- a/cpukit/score/src/schedulersimpleenqueuefirst.c
+++ b/cpukit/score/src/schedulersimpleenqueuefirst.c
@@ -18,14 +18,11 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/chain.h>
-#include <rtems/score/thread.h>
#include <rtems/score/schedulersimple.h>
void _Scheduler_simple_Enqueue_first(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_simple_Ready_queue_enqueue_first( scheduler, the_thread );
diff --git a/cpukit/score/src/schedulersimpleextract.c b/cpukit/score/src/schedulersimpleextract.c
index 7bb4339ff3..6b89c99881 100644
--- a/cpukit/score/src/schedulersimpleextract.c
+++ b/cpukit/score/src/schedulersimpleextract.c
@@ -19,13 +19,11 @@
#include "config.h"
#endif
-#include <rtems/score/schedulersimple.h>
-#include <rtems/score/chainimpl.h>
-#include <rtems/score/thread.h>
+#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Extract(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
(void) scheduler;
diff --git a/cpukit/score/src/schedulersimplereadyqueueenqueue.c b/cpukit/score/src/schedulersimplereadyqueueenqueue.c
index 3e06a26b29..8e5f12d6ee 100644
--- a/cpukit/score/src/schedulersimplereadyqueueenqueue.c
+++ b/cpukit/score/src/schedulersimplereadyqueueenqueue.c
@@ -21,12 +21,12 @@
#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Ready_queue_enqueue(
- Scheduler_Control *scheduler_base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_simple_Control *scheduler =
- _Scheduler_simple_Self_from_base( scheduler_base );
+ Scheduler_simple_Context *context =
+ _Scheduler_simple_Get_context( scheduler );
- _Scheduler_simple_Insert_priority_fifo( &scheduler->Ready, the_thread );
+ _Scheduler_simple_Insert_priority_fifo( &context->Ready, the_thread );
}
diff --git a/cpukit/score/src/schedulersimplereadyqueueenqueuefirst.c b/cpukit/score/src/schedulersimplereadyqueueenqueuefirst.c
index dd3379fda5..c5f1e68597 100644
--- a/cpukit/score/src/schedulersimplereadyqueueenqueuefirst.c
+++ b/cpukit/score/src/schedulersimplereadyqueueenqueuefirst.c
@@ -21,12 +21,12 @@
#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Ready_queue_enqueue_first(
- Scheduler_Control *scheduler_base,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
- Scheduler_simple_Control *scheduler =
- _Scheduler_simple_Self_from_base( scheduler_base );
+ Scheduler_simple_Context *context =
+ _Scheduler_simple_Get_context( scheduler );
- _Scheduler_simple_Insert_priority_lifo( &scheduler->Ready, the_thread );
+ _Scheduler_simple_Insert_priority_lifo( &context->Ready, the_thread );
}
diff --git a/cpukit/score/src/schedulersimpleschedule.c b/cpukit/score/src/schedulersimpleschedule.c
index d3574b04cc..fcc1398b48 100644
--- a/cpukit/score/src/schedulersimpleschedule.c
+++ b/cpukit/score/src/schedulersimpleschedule.c
@@ -21,8 +21,8 @@
#include <rtems/score/schedulersimpleimpl.h>
void _Scheduler_simple_Schedule(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_simple_Schedule_body( scheduler, the_thread, false );
diff --git a/cpukit/score/src/schedulersimplesmp.c b/cpukit/score/src/schedulersimplesmp.c
index 20a35af07a..5448d5d3de 100644
--- a/cpukit/score/src/schedulersimplesmp.c
+++ b/cpukit/score/src/schedulersimplesmp.c
@@ -22,35 +22,33 @@
#include <rtems/score/schedulersmpimpl.h>
#include <rtems/score/wkspace.h>
-static Scheduler_simple_SMP_Control *
-_Scheduler_simple_SMP_Self_from_base( Scheduler_Control *base )
+static Scheduler_simple_SMP_Context *
+_Scheduler_simple_SMP_Get_context( const Scheduler_Control *scheduler )
{
- return (Scheduler_simple_SMP_Control *) base->information;
+ return (Scheduler_simple_SMP_Context *) scheduler->context;
}
-static Scheduler_simple_SMP_Control *
-_Scheduler_simple_SMP_Self_from_SMP_base( Scheduler_SMP_Control *smp_base )
+static Scheduler_simple_SMP_Context *
+_Scheduler_simple_SMP_Self_from_SMP_base( Scheduler_SMP_Context *smp_base )
{
- return (Scheduler_simple_SMP_Control *)
- ( (char *) smp_base - offsetof( Scheduler_simple_SMP_Control, Base ) );
+ return (Scheduler_simple_SMP_Context *)
+ ( (char *) smp_base - offsetof( Scheduler_simple_SMP_Context, Base ) );
}
-void _Scheduler_simple_smp_Initialize( void )
+void _Scheduler_simple_smp_Initialize( const Scheduler_Control *scheduler )
{
- Scheduler_simple_SMP_Control *self =
- _Workspace_Allocate_or_fatal_error( sizeof( *self ) );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_SMP_Initialize( &self->Base );
_Chain_Initialize_empty( &self->Ready );
-
- _Scheduler.information = self;
}
static Thread_Control *_Scheduler_simple_smp_Get_highest_ready(
- Scheduler_SMP_Control *smp_base
+ Scheduler_SMP_Context *smp_base
)
{
- Scheduler_simple_SMP_Control *self =
+ Scheduler_simple_SMP_Context *self =
_Scheduler_simple_SMP_Self_from_SMP_base( smp_base );
Thread_Control *highest_ready = NULL;
Chain_Control *ready = &self->Ready;
@@ -63,11 +61,11 @@ static Thread_Control *_Scheduler_simple_smp_Get_highest_ready(
}
static void _Scheduler_simple_smp_Move_from_scheduled_to_ready(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *scheduled_to_ready
)
{
- Scheduler_simple_SMP_Control *self =
+ Scheduler_simple_SMP_Context *self =
_Scheduler_simple_SMP_Self_from_SMP_base( smp_base );
_Chain_Extract_unprotected( &scheduled_to_ready->Object.Node );
@@ -78,7 +76,7 @@ static void _Scheduler_simple_smp_Move_from_scheduled_to_ready(
}
static void _Scheduler_simple_smp_Move_from_ready_to_scheduled(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *ready_to_scheduled
)
{
@@ -90,11 +88,11 @@ static void _Scheduler_simple_smp_Move_from_ready_to_scheduled(
}
static void _Scheduler_simple_smp_Insert_ready_lifo(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
+ Scheduler_simple_SMP_Context *self =
_Scheduler_simple_SMP_Self_from_SMP_base( smp_base );
_Chain_Insert_ordered_unprotected(
@@ -105,11 +103,11 @@ static void _Scheduler_simple_smp_Insert_ready_lifo(
}
static void _Scheduler_simple_smp_Insert_ready_fifo(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
+ Scheduler_simple_SMP_Context *self =
_Scheduler_simple_SMP_Self_from_SMP_base( smp_base );
_Chain_Insert_ordered_unprotected(
@@ -120,7 +118,7 @@ static void _Scheduler_simple_smp_Insert_ready_fifo(
}
static void _Scheduler_simple_smp_Do_extract(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread
)
{
@@ -133,12 +131,12 @@ static void _Scheduler_simple_smp_Do_extract(
}
void _Scheduler_simple_smp_Block(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_SMP_Block(
&self->Base,
@@ -150,7 +148,7 @@ void _Scheduler_simple_smp_Block(
}
static void _Scheduler_simple_smp_Enqueue_ordered(
- Scheduler_SMP_Control *smp_base,
+ Scheduler_SMP_Context *smp_base,
Thread_Control *thread,
Chain_Node_order order,
Scheduler_SMP_Insert insert_ready,
@@ -170,12 +168,12 @@ static void _Scheduler_simple_smp_Enqueue_ordered(
}
void _Scheduler_simple_smp_Enqueue_priority_lifo(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_simple_smp_Enqueue_ordered(
&self->Base,
@@ -187,12 +185,12 @@ void _Scheduler_simple_smp_Enqueue_priority_lifo(
}
void _Scheduler_simple_smp_Enqueue_priority_fifo(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_simple_smp_Enqueue_ordered(
&self->Base,
@@ -204,12 +202,12 @@ void _Scheduler_simple_smp_Enqueue_priority_fifo(
}
void _Scheduler_simple_smp_Extract(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_SMP_Extract(
&self->Base,
@@ -219,7 +217,7 @@ void _Scheduler_simple_smp_Extract(
}
void _Scheduler_simple_smp_Yield(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
@@ -227,19 +225,19 @@ void _Scheduler_simple_smp_Yield(
_ISR_Disable( level );
- _Scheduler_simple_smp_Extract( base, thread );
- _Scheduler_simple_smp_Enqueue_priority_fifo( base, thread );
+ _Scheduler_simple_smp_Extract( scheduler, thread );
+ _Scheduler_simple_smp_Enqueue_priority_fifo( scheduler, thread );
_ISR_Enable( level );
}
void _Scheduler_simple_smp_Schedule(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_SMP_Schedule(
&self->Base,
@@ -250,13 +248,13 @@ void _Scheduler_simple_smp_Schedule(
}
void _Scheduler_simple_smp_Start_idle(
- Scheduler_Control *base,
+ const Scheduler_Control *scheduler,
Thread_Control *thread,
Per_CPU_Control *cpu
)
{
- Scheduler_simple_SMP_Control *self =
- _Scheduler_simple_SMP_Self_from_base( base );
+ Scheduler_simple_SMP_Context *self =
+ _Scheduler_simple_SMP_Get_context( scheduler );
_Scheduler_SMP_Start_idle( &self->Base, thread, cpu );
}
diff --git a/cpukit/score/src/schedulersimpleunblock.c b/cpukit/score/src/schedulersimpleunblock.c
index c669a9b616..3a9528fba5 100644
--- a/cpukit/score/src/schedulersimpleunblock.c
+++ b/cpukit/score/src/schedulersimpleunblock.c
@@ -18,14 +18,12 @@
#include "config.h"
#endif
-#include <rtems/system.h>
-#include <rtems/score/isr.h>
-#include <rtems/score/schedulersimple.h>
+#include <rtems/score/schedulersimpleimpl.h>
#include <rtems/score/thread.h>
void _Scheduler_simple_Unblock(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
_Scheduler_simple_Ready_queue_enqueue( scheduler, the_thread );
diff --git a/cpukit/score/src/schedulersimpleyield.c b/cpukit/score/src/schedulersimpleyield.c
index 664fa31c76..ea41892ad0 100644
--- a/cpukit/score/src/schedulersimpleyield.c
+++ b/cpukit/score/src/schedulersimpleyield.c
@@ -20,11 +20,10 @@
#include <rtems/score/schedulersimpleimpl.h>
#include <rtems/score/isr.h>
-#include <rtems/score/threadimpl.h>
void _Scheduler_simple_Yield(
- Scheduler_Control *scheduler,
- Thread_Control *the_thread
+ const Scheduler_Control *scheduler,
+ Thread_Control *the_thread
)
{
ISR_Level level;
diff --git a/cpukit/score/src/threadchangepriority.c b/cpukit/score/src/threadchangepriority.c
index fab0c9e850..68eb3e89fa 100644
--- a/cpukit/score/src/threadchangepriority.c
+++ b/cpukit/score/src/threadchangepriority.c
@@ -29,9 +29,9 @@ void _Thread_Change_priority(
bool prepend_it
)
{
- Scheduler_Control *scheduler = _Scheduler_Get( the_thread );
- ISR_Level level;
- States_Control state, original_state;
+ const Scheduler_Control *scheduler = _Scheduler_Get( the_thread );
+ ISR_Level level;
+ States_Control state, original_state;
/*
* Save original state
diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c
index fcf9d6ce3e..47c27929dd 100644
--- a/cpukit/score/src/threadrestart.c
+++ b/cpukit/score/src/threadrestart.c
@@ -216,9 +216,9 @@ void _Thread_Life_action_handler(
}
static void _Thread_Start_life_change(
- Thread_Control *the_thread,
- Scheduler_Control *scheduler,
- Priority_Control priority
+ Thread_Control *the_thread,
+ const Scheduler_Control *scheduler,
+ Priority_Control priority
)
{
the_thread->is_preemptible = the_thread->Start.is_preemptible;
@@ -245,7 +245,7 @@ static void _Thread_Request_life_change(
Thread_Life_state previous_life_state;
Per_CPU_Control *cpu;
ISR_Level level;
- Scheduler_Control *scheduler;
+ const Scheduler_Control *scheduler;
cpu = _Thread_Action_ISR_disable_and_acquire( the_thread, &level );
previous_life_state = the_thread->Life.state;