forked from Imagelibrary/rtems
score: _Scheduler_priority_Ready_queue_initialize
Use priority maximum of scheduler instance. This avoids a potential memory corruption on SMP configurations.
This commit is contained in:
@@ -54,14 +54,15 @@ RTEMS_INLINE_ROUTINE Scheduler_priority_Node *_Scheduler_priority_Thread_get_nod
|
||||
* This routine initializes @a ready_queues for priority-based scheduling.
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_initialize(
|
||||
Chain_Control *ready_queues
|
||||
Chain_Control *ready_queues,
|
||||
Priority_Control maximum_priority
|
||||
)
|
||||
{
|
||||
size_t index;
|
||||
|
||||
/* initialize ready queue structures */
|
||||
for( index=0; index <= PRIORITY_MAXIMUM; index++)
|
||||
_Chain_Initialize_empty( &ready_queues[index] );
|
||||
for ( index = 0 ; index <= (size_t) maximum_priority ; ++index ) {
|
||||
_Chain_Initialize_empty( &ready_queues[ index ] );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,5 +27,8 @@ void _Scheduler_priority_Initialize( const Scheduler_Control *scheduler )
|
||||
_Scheduler_priority_Get_context( scheduler );
|
||||
|
||||
_Priority_bit_map_Initialize( &context->Bit_map );
|
||||
_Scheduler_priority_Ready_queue_initialize( &context->Ready[ 0 ] );
|
||||
_Scheduler_priority_Ready_queue_initialize(
|
||||
&context->Ready[ 0 ],
|
||||
scheduler->maximum_priority
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,10 @@ void _Scheduler_priority_SMP_Initialize( const Scheduler_Control *scheduler )
|
||||
|
||||
_Scheduler_SMP_Initialize( &self->Base );
|
||||
_Priority_bit_map_Initialize( &self->Bit_map );
|
||||
_Scheduler_priority_Ready_queue_initialize( &self->Ready[ 0 ] );
|
||||
_Scheduler_priority_Ready_queue_initialize(
|
||||
&self->Ready[ 0 ],
|
||||
scheduler->maximum_priority
|
||||
);
|
||||
}
|
||||
|
||||
void _Scheduler_priority_SMP_Node_initialize(
|
||||
|
||||
@@ -165,7 +165,10 @@ void _Scheduler_strong_APA_Initialize( const Scheduler_Control *scheduler )
|
||||
|
||||
_Scheduler_SMP_Initialize( &self->Base );
|
||||
_Priority_bit_map_Initialize( &self->Bit_map );
|
||||
_Scheduler_priority_Ready_queue_initialize( &self->Ready[ 0 ] );
|
||||
_Scheduler_priority_Ready_queue_initialize(
|
||||
&self->Ready[ 0 ],
|
||||
scheduler->maximum_priority
|
||||
);
|
||||
}
|
||||
|
||||
void _Scheduler_strong_APA_Node_initialize(
|
||||
|
||||
Reference in New Issue
Block a user