summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Scheduler node awareness for thread queuesSebastian Huber2016-09-211-24/+349
| | | | | | | | Maintain the priority of a thread for each scheduler instance via the thread queue enqueue, extract, priority actions and surrender operations. This replaces the primitive priority boosting. Update #2556.
* rtems: Add rtems_task_get_priority()Sebastian Huber2016-09-211-0/+16
| | | | | Update #2556. Update #2784.
* smptests/smpmutex01: Use test case functionsSebastian Huber2016-09-211-2/+24
|
* score: Rework thread priority managementSebastian Huber2016-09-212-21/+25
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* libmisc/capture: Remove the reserved _t in the types.Chris Johns2016-09-012-15/+15
|
* libmisc/capture: Fix the capture engine on SMP.Chris Johns2016-09-011-77/+95
| | | | | | | | | | | | | | | | | | | | | | | This patches some issues with the capture engine: 1. Check is the engine is open in ctrace commands. 2. Check all record open and appends for overflow. 3. Fix the record open to take the size of user data and not the record header. 4. Use packed structs for data being written to the per cpu buffers. 5. Remove direct struct access to the capture buffers to avoid misaligned accesses. 6. Add support to extract records, no struct access to the capture buffers. 7. Update ctrace to extract records from the capture buffers. 8. Add support to ctrace to always print the task name if it has one. 9. Add support to manage names or the lack of a name. 10. Range of minor fixes. 11. Fix a long standing bug in ctset's handling of args. Closes #2780.
* smptests/smpmutex02: New testSebastian Huber2016-07-256-0/+1052
| | | | Update #2765.
* score: Postpone SMP shutdown in _Terminate()Sebastian Huber2016-07-061-21/+17
| | | | | This enables fatal extensions to continue program execution after some fatal errors.
* rtems: Fix rtems_task_set_scheduler() APISebastian Huber2016-07-018-36/+62
| | | | | | | | | | | 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.
* smptests/smpstrongapa01: SimplifySebastian Huber2016-06-301-5/+1
|
* smptests/smpstrongapa01: Add test casesSebastian Huber2016-06-301-3/+300
|
* score: Change Priority_Control to 64-bitSebastian Huber2016-06-241-1/+1
| | | | | | | | A 32-bit Priority_Control limits the uptime to 49 days with a 1ms clock tick in case the EDF scheduler is used. Increase it to 64-bit to enable proper operation of the EDF scheduler, Close 2173.
* smptests/smpmrsp01: Fix due to API changesSebastian Huber2016-06-231-168/+60
| | | | | | | Commit 77ff5599e0d8e6d91190a379be21a332f83252b0 introduced a change in the rtems_semaphore_create() behaviour for MrsP semaphores. The ceiling priorities for all schedulers except the scheduler of the executing thread are initialized to zero.
* 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.
* score: Introduce map priority scheduler operationSebastian Huber2016-06-227-2/+252
| | | | | | | | | | | Introduce map/unmap priority scheduler operations to map thread priority values from/to the user domain to/from the scheduler domain. Use the map priority operation to validate the thread priority. The EDF schedulers use this new operation to distinguish between normal priorities and priorities obtain through a job release. Update #2173. Update #2556.
* posix: sched_get_priority_max()Sebastian Huber2016-06-141-4/+4
| | | | | | Enable for all configurations since it pulls in no additional dependencies. Return value of the scheduler instance of the executing thread.
* posix: sched_get_priority_min()Sebastian Huber2016-06-141-1/+6
| | | | | Enable for all configurations since it pulls in no additional dependencies.
* score: Add an SMP sequence lock implementationSebastian Huber2016-06-092-24/+342
|
* smptests/smpatomic01: Fix seqlock writeSebastian Huber2016-06-081-1/+3
|
* smptests/smpatomic01: Add seqlock test caseSebastian Huber2016-06-072-0/+235
|
* smptests/smpatomic01: New test casesSebastian Huber2016-06-012-18/+349
| | | | | Demonstrate that a read-modify-write atomic operation may be necessary on some archtitectures to observe the latest value written.
* cpukit, testsuite: Add rtems_printf and rtems_printer support.Chris Johns2016-05-257-26/+36
| | | | | | | | | | | | | | | | | | | This change adds rtems_printf and related functions and wraps the RTEMS print plugin support into a user API. All references to the plugin are removed and replaced with the rtems_printer interface. Printk and related functions are made to return a valid number of characters formatted and output. The function attribute to check printf functions has been added to rtems_printf and printk. No changes to remove warrnings are part of this patch set. The testsuite has been moved over to the rtems_printer. The testsuite has a mix of rtems_printer access and direct print control via the tmacros.h header file. The support for begink/endk has been removed as it served no purpose and only confused the code base. The testsuite has not been refactored to use rtems_printf. This is future work.
* Replace *_Get_interrupt_disable() with *_Get()Sebastian Huber2016-05-202-2/+2
| | | | | Uniformly use *_Get() to get an object by identifier with a lock context.
* score: Remove the Giant lockSebastian Huber2016-05-206-186/+0
| | | | Update #2555.
* score: Rename _ISR_Disable_without_giant()Sebastian Huber2016-05-203-8/+8
| | | | | | | | | Rename _ISR_Disable_without_giant() into _ISR_Local_disable(). Rename _ISR_Enable_without_giant() into _ISR_Local_enable(). This is a preparation to remove the Giant lock. Update #2555.
* testsuites: Avoid Giant lockSebastian Huber2016-05-205-19/+22
| | | | | | | | | Replace _Thread_Disable_dispatch() with _Thread_Dispatch_disable(). Replace _Thread_Enable_dispatch() with _Thread_Dispatch_enable(). This is a preparation to remove the Giant lock. Update #2555.
* testsuites: Replace _Thread_Get()Sebastian Huber2016-05-202-8/+8
| | | | | | | Replace _Thread_Get() with _Thread_Get_interrupt_disable() to avoid the Giant lock. Update #2555.
* score: Add Thread_Change_life()Sebastian Huber2016-05-201-1/+1
| | | | | | | | | Add _Thread_Change_life_locked() as a general function to alter the thread life state. Use it to implement _Thread_Set_life_protection() as a first step. Update #2555. Update #2626.
* SMP: Add Mellor-Crummey and Scott (MCS) lockSebastian Huber2016-05-191-14/+159
| | | | | | | | | | Added only for evaluation purposes. We have to compare the performance against the ticket lock on the interesting platforms via smptests/smplock01. The following GCC shortcoming affects the MCS lock: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66867
* smptests/smpcapture02: Adjust for clock changesSebastian Huber2016-05-121-8/+8
| | | | | | | Fix overall clock tick count. Change introduced by 90d8567d34a6d80da04b1cb37b667a3173f584c4. Update #2554.
* 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.
* score: Add dummy Strong APA schedulerSebastian Huber2016-05-026-0/+88
| | | | | | Start with a copy of the Priority SMP scheduler implementation. Update #2510.
* score: Replace watchdog handler implementationSebastian Huber2016-03-047-32/+433
| | | | | | | | | Use a red-black tree instead of delta chains. Close #2344. Update #2554. Update #2555. Close #2606.
* score: Add _SMP_Online_processorsSebastian Huber2016-03-041-0/+10
|
* smptests/smpmrsp01: Fix test contextSebastian Huber2016-03-031-1/+1
|
* smptests/smpwakeafter01: Add scheduler configSebastian Huber2016-02-172-0/+67
| | | | Update #2554.
* smptests/README: Delete obsolete informationSebastian Huber2016-01-111-5/+0
|
* Delete CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEMSebastian Huber2015-10-151-2/+0
| | | | This define accidentally re-appeared.
* SMP: Fix and optimize thread dispatchingSebastian Huber2015-09-281-1/+2
| | | | | | | | According to the C11 and C++11 memory models only a read-modify-write operation guarantees that we read the last value written in modification order. Avoid the sequential consistent thread fence and instead use the inter-processor interrupt to set the thread dispatch necessary indicator.
* score: Use uintptr_t for atomic pointer operationsSebastian Huber2015-09-262-16/+0
| | | | Do not obfuscate the standard API.
* score: Implement priority boostingSebastian Huber2015-09-041-5/+56
|
* score: Implement SMP-specific priority queueSebastian Huber2015-09-046-0/+363
|
* smptests/smpscheduler02: Reduce required CPU countSebastian Huber2015-06-031-41/+50
|
* smptests/smpmrsp01: Reduce required CPU countSebastian Huber2015-06-031-8/+13
|
* 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.
* smptests/smpcache01: RestructureSebastian Huber2015-05-152-109/+105
| | | | Restructure to avoid large maximum thread dispatch disabled times.
* score: Fix scheduler helping protocolSebastian Huber2015-05-112-250/+478
| | | | | | Account for priority changes of threads executing in a foreign partition. Exchange idle threads in case a victim node uses an idle thread and the new scheduled node needs an idle thread.