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:
Sebastian Huber
2016-06-14 10:12:34 +02:00
parent 3eda7e5493
commit 042072bfdf
4 changed files with 17 additions and 7 deletions

View File

@@ -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 ] );
}
}
/**

View File

@@ -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
);
}

View File

@@ -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(

View File

@@ -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(