forked from Imagelibrary/rtems
score: PR2174: Add workaround
Add _Scheduler_FIXME_thread_priority_queues_are_broken to prevent thread priority queues in case an EDF scheduler is used.
This commit is contained in:
@@ -781,6 +781,12 @@ const rtems_libio_helper rtems_fs_init_helper =
|
||||
NULL, /* Scheduler Specific Data Pointer */
|
||||
CONFIGURE_SCHEDULER_ENTRY_POINTS /* Scheduler Operations */
|
||||
};
|
||||
|
||||
#if defined(CONFIGURE_SCHEDULER_EDF)
|
||||
const bool _Scheduler_FIXME_thread_priority_queues_are_broken = true;
|
||||
#else
|
||||
const bool _Scheduler_FIXME_thread_priority_queues_are_broken = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -184,6 +184,12 @@ void _Scheduler_default_Start_idle(
|
||||
Per_CPU_Control *processor
|
||||
);
|
||||
|
||||
/*
|
||||
* See also PR2174: Memory corruption with EDF scheduler and thread priority
|
||||
* queues.
|
||||
*/
|
||||
extern const bool _Scheduler_FIXME_thread_priority_queues_are_broken;
|
||||
|
||||
/**@}*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <rtems/score/threadqimpl.h>
|
||||
#include <rtems/score/chainimpl.h>
|
||||
#include <rtems/score/scheduler.h>
|
||||
|
||||
void _Thread_queue_Initialize(
|
||||
Thread_queue_Control *the_thread_queue,
|
||||
@@ -28,6 +29,10 @@ void _Thread_queue_Initialize(
|
||||
uint32_t timeout_status
|
||||
)
|
||||
{
|
||||
if ( _Scheduler_FIXME_thread_priority_queues_are_broken ) {
|
||||
the_discipline = THREAD_QUEUE_DISCIPLINE_FIFO;
|
||||
}
|
||||
|
||||
the_thread_queue->state = state;
|
||||
the_thread_queue->discipline = the_discipline;
|
||||
the_thread_queue->timeout_status = timeout_status;
|
||||
|
||||
Reference in New Issue
Block a user