summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests/smpscheduler03 (follow)
Commit message (Collapse)AuthorAgeFilesLines
* testsuite/smptests: Merged nested Makefile.am files into one Makefile.amChris Johns2018-04-101-19/+0
| | | | | | This change is part of the testsuite Makefile.am reorganization. Update #3382
* config: Use new scheduler configuration definesSebastian Huber2018-03-121-4/+4
| | | | Update #3325.
* tests: Use simple console driverSebastian Huber2017-11-061-1/+1
| | | | | Update #3170. Update #3199.
* tests: Remove TEST_INITSebastian Huber2017-10-281-2/+0
| | | | | | | | The TEST_EXTERN is a used only by the system.h style tests and they use CONFIGURE_INIT appropriately. Update #3170. Update #3199.
* testsuite: Fix buildSebastian Huber2017-10-231-0/+2
| | | | Updates #3170.
* score: Add SMP EDF schedulerSebastian Huber2017-06-291-0/+5
| | | | Update #3056.
* smptests: Split smpscheduler03Sebastian Huber2017-06-295-659/+583
| | | | | | Split smpscheduler03 to run the tests with only one processor. Update #3056.
* Rename CONFIGURE_SMP_MAXIMUM_PROCESSORSSebastian Huber2017-02-141-1/+1
| | | | | | | Rename CONFIGURE_SMP_MAXIMUM_PROCESSORS to CONFIGURE_MAXIMUM_PROCESSORS since the SMP part is superfluous. Update #2894.
* score: Improve scheduler helping protocolSebastian Huber2017-02-031-20/+6
| | | | | | | | | | | Only register ask for help requests in the scheduler unblock and yield operations. The actual ask for help operation is carried out during _Thread_Do_dispatch() on a processor related to the thread. This yields a better separation of scheduler instances. A thread of one scheduler instance should not be forced to carry out too much work for threads on other scheduler instances. Update #2556.
* Remove CONFIGURE_SMP_APPLICATIONSebastian Huber2017-02-021-2/+0
| | | | | | Enable the SMP support if CONFIGURE_SMP_MAXIMUM_PROCESSORS > 1. Update #2893.
* score: Initialize thread queue context earlySebastian Huber2016-12-021-1/+2
| | | | | | | | Initialize thread queue context early preferably outside the critical section. Remove implicit _Thread_queue_Context_initialize() from _Thread_Wait_acquire().
* score: Fix thread queue context initializationSebastian Huber2016-11-281-1/+1
| | | | | Initialize the thread queue context with invalid data in debug configurations to catch missing set up steps.
* score: Simplify yield and unblock scheduler opsSebastian Huber2016-11-021-22/+18
| | | | Update #2556.
* score: Introduce Thread_Scheduler_control::homeSebastian Huber2016-11-021-4/+4
| | | | | | | | Replace Thread_Scheduler_control::control and Thread_Scheduler_control::own_control with new Thread_Scheduler_control::home. Update #2556.
* score: Simplify update priority scheduler opSebastian Huber2016-11-021-11/+5
| | | | Remove unused return status.
* score: Pass scheduler node to unblock operationSebastian Huber2016-11-021-3/+10
| | | | | | Changed for consistency with other scheduler operations. Update #2556.
* score: Pass scheduler node to block operationSebastian Huber2016-11-021-3/+6
| | | | | | Changed for consistency with other scheduler operations. Update #2556.
* score: Pass scheduler node to yield operationSebastian Huber2016-11-021-3/+10
| | | | | | Changed for consistency with other scheduler operations. Update #2556.
* score: Pass scheduler node to update priority opSebastian Huber2016-11-021-12/+22
| | | | | | | This enables to call this scheduler operation for all scheduler nodes available to a thread. Update #2556.
* score: Rework thread priority managementSebastian Huber2016-09-211-19/+24
| | | | | | | | | | | | | | | | | | | | | | | | | Add priority nodes which contribute to the overall thread priority. The actual priority of a thread is now an aggregation of priority nodes. The thread priority aggregation for the home scheduler instance of a thread consists of at least one priority node, which is normally the real priority of the thread. The locking protocols (e.g. priority ceiling and priority inheritance), rate-monotonic period objects and the POSIX sporadic server add, change and remove priority nodes. A thread changes its priority now immediately, e.g. priority changes are not deferred until the thread releases its last resource. Replace the _Thread_Change_priority() function with * _Thread_Priority_perform_actions(), * _Thread_Priority_add(), * _Thread_Priority_remove(), * _Thread_Priority_change(), and * _Thread_Priority_update(). Update #2412. Update #2556.
* score: Introduce _Thread_Get_priority()Sebastian Huber2016-09-081-1/+1
| | | | Avoid direct access to thread internal data fields.
* rtems: Fix rtems_task_set_scheduler() APISebastian Huber2016-07-011-2/+2
| | | | | | | | | | | Task priorities are only valid within a scheduler instance. The rtems_task_set_scheduler() directive moves a task from one scheduler instance to another using the current priority of the thread. However, the current task priority of the source scheduler instance is undefined in the target scheduler instance. Add a third parameter to specify the priority. Close #2749.
* score: Add thread priority to scheduler nodesSebastian Huber2016-06-221-13/+12
| | | | | | | | | | | | | | | | | | The thread priority is manifest in two independent areas. One area is the user visible thread priority along with a potential thread queue. The other is the scheduler. Currently, a thread priority update via _Thread_Change_priority() first updates the user visble thread priority and the thread queue, then the scheduler is notified if necessary. The priority is passed to the scheduler via a local variable. A generation counter ensures that the scheduler discards out-of-date priorities. This use of a local variable ties the update in these two areas close together. For later enhancements and the OMIP locking protocol implementation we need more flexibility. Add a thread priority information block to Scheduler_Node and synchronize priority value updates via a sequence lock on SMP configurations. Update #2556.
* Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2016-05-201-1/+1
| | | | | Uniformly use *_Get() to get an object by identifier with a lock context.
* testsuites: Replace _Thread_Get()Sebastian Huber2016-05-201-4/+4
| | | | | | | Replace _Thread_Get() with _Thread_Get_interrupt_disable() to avoid the Giant lock. Update #2555.
* score: Use thread state lock for current stateSebastian Huber2016-05-121-16/+40
| | | | | | | In addition protect scheduler of thread by thread state lock. Enables use of scheduler per-instance locks. Update #2555.
* smptests/smpscheduler03: Use proper lockSebastian Huber2015-06-031-9/+9
|
* smptests/smpscheduler03: RestructureSebastian Huber2015-05-191-41/+42
| | | | Restructure to avoid large maximum thread dispatch disabled times.
* score: Rework _Thread_Change_priority()Sebastian Huber2015-05-191-19/+43
| | | | | | | | | | | | | Move the writes to Thread_Control::current_priority and Thread_Control::real_priority into _Thread_Change_priority() under the protection of the thread lock. Add a filter function to _Thread_Change_priority() to enable specialized variants. Avoid race conditions during a thread priority restore with the new Thread_Control::priority_restore_hint for an important average case optimizations used by priority inheritance mutexes. Update #2273.
* score: Need for help indicator for scheduler opsSebastian Huber2014-07-081-16/+387
| | | | | | | | | | | | | Return a thread in need for help for the following scheduler operations - unblock, - change priority, and - yield. A thread in need for help is a thread that encounters a scheduler state change from scheduled to ready or a thread that cannot be scheduled in an unblock operation. Such a thread can ask threads which depend on resources owned by this thread for help.
* score: Rename *_Node_get() to *_Thread_get_node()Sebastian Huber2014-07-081-1/+1
| | | | | | This emphasizes that the scheduler node of a thread is returned and this is not a function working with scheduler nodes like the other *_Node_*() functions.
* smptests/smpscheduler03: Test all SMP schedulersSebastian Huber2014-06-122-4/+135
|
* score: Split SMP scheduler enqueue functionSebastian Huber2014-05-154-0/+176
Extract code from _Scheduler_SMP_Enqueue_ordered() and move it to the new function _Scheduler_SMP_Enqueue_scheduled_ordered() to avoid untestable execution paths. Add and use function _Scheduler_SMP_Unblock().