summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests (follow)
Commit message (Collapse)AuthorAgeFilesLines
* smptests/smpload01: New testSebastian Huber2014-03-146-0/+344
|
* score: Add SMP lock profiling supportSebastian Huber2014-03-141-3/+3
|
* score: Add function to destroy SMP locksSebastian Huber2014-03-111-2/+10
|
* score: Add local context to SMP lock APISebastian Huber2014-03-111-10/+15
| | | | | | | | | | | Add a local context structure to the SMP lock API for acquire and release pairs. This context can be used to store the ISR level and profiling information. It may be later used to enable more sophisticated lock algorithms, e.g. MCS locks. There is only one lock that cannot be used with a local context. This is the per-CPU lock since here we would have to transfer the local context through a context switch which is very complicated.
* smptests/smppsxaffinity02: Fix end of test messageSebastian Huber2014-03-101-1/+1
|
* Remove trailing whitespace in previous patchesJennifer Averett2014-03-076-45/+45
|
* smptests: Add smppsxaffinity02.Jennifer Averett2014-03-076-0/+304
| | | | | | | | This method exercises the ability to dynamically get and set the affinity of POSIX threads. NOTE: There is no scheduler support for affinity. This is simply a data integrity test.
* smptests: Add smppsxaffinity01.Jennifer Averett2014-03-076-0/+232
| | | | | This test exercises the ability to obtain and modify the affinity field of the POSIX thread attributes.
* smptests: Add smpaffinity01Jennifer Averett2014-03-076-0/+307
| | | | This test exercises the new Classic API task affinity methods.
* smptests: Delete config.h.inSebastian Huber2014-03-061-19/+0
|
* score: Add _Atomic_Fence()Sebastian Huber2014-03-062-19/+70
|
* score: Add and use _Giant_Drop()Sebastian Huber2014-03-066-0/+177
| | | | New test smptests/smpfatal03.
* score: SMP initialization and shutdown changesSebastian Huber2014-03-0610-0/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename _SMP_Request_other_cores_to_perform_first_context_switch() into _SMP_Request_start_multitasking() since this requests now a multitasking start on all configured and available processors. The name corresponds _Thread_Start_multitasking() and _SMP_Start_multitasking_on_secondary_processor() actions issued in response to this request. Move in source file to right place. Rename PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING into PER_CPU_STATE_READY_TO_START_MULTITASKING. Rename PER_CPU_STATE_BEGIN_MULTITASKING into PER_CPU_STATE_REQUEST_START_MULTITASKING. Rename _SMP_Request_other_cores_to_shutdown() into _SMP_Request_shutdown(). Add a per-CPU state lock to protect all changes. This was necessary to offer a controlled shutdown of the system (atomic read/writes alone are not sufficient for this kind of synchronization). Add documentation for Per_CPU_State. Delete debug output. New tests smptests/smpfatal01 and smptests/smpfatal02.
* score: _CPU_SMP_Get_current_processor()Sebastian Huber2014-02-212-18/+64
| | | | | | | Remove RTEMS_COMPILER_PURE_ATTRIBUTE from _SMP_Get_current_processor() and all _CPU_SMP_Get_current_processor(). Make inline ASM statements volatile again. Test smptests/smpmigration01 showed that GCC optimizes too much otherwise.
* smptests: Add check for affinity support in newlib.Jennifer Averett2014-02-171-0/+21
|
* score: Add SMP barrierSebastian Huber2014-02-172-98/+16
|
* smptests/smplock01: Use atomic operationsSebastian Huber2014-02-171-57/+41
|
* Require presence of <stdatomic.h> for SMP supportSebastian Huber2014-02-172-4/+0
|
* score: Add Atomic_UintSebastian Huber2014-02-141-0/+54
|
* smptests/smp06: Delete testSebastian Huber2013-11-116-187/+0
| | | | | | | This test referred to the first version of the simple SMP scheduler which used the thread execution time for its scheduling decisions. For the current simple SMP scheduler, the execution time of threads is irrelevant (like in the corresponding single-processor variant).
* rename smpatomic08 to smpatomic01WeiY2013-10-087-26/+32
|
* delete smpatomic0-7 test casesWeiY2013-10-0844-1938/+0
|
* add simple atomic test cases into smpatomic08WeiY2013-10-081-0/+108
|
* smptests/smpatomic08: Add initialization test caseSebastian Huber2013-09-032-0/+43
|
* score: Use unsigned long for atomic integersSebastian Huber2013-09-038-62/+62
| | | | | | | Use unsigned long instead of uint_fast32_t since C11 provides only a ATOMIC_LONG_LOCK_FREE macro constant. This makes it also possible to use properly typed integer literals like 123UL. It is now clear which compatible type should be used for the atomic integer.
* smptests/smpatomic08: Avoid copy and pasteSebastian Huber2013-09-012-163/+86
|
* smptests/smpatomic08: Simplify or/and test caseSebastian Huber2013-09-011-38/+52
| | | | Renamed and use common integer variables.
* smptests/smpatomic08: Fix compare and exchangeSebastian Huber2013-09-011-9/+17
|
* add atomic sub, and, or, compare_exchange test cases into smpatomic08WeiY2013-09-012-1/+175
|
* smptests/smpatomic08: Fix race conditionsSebastian Huber2013-08-292-55/+54
|
* smptests/smpatomic08: New testSebastian Huber2013-08-286-0/+382
|
* smptests: Move ATOMIC conditional to top-levelSebastian Huber2013-08-288-28/+2
|
* smp: Disable restart of threads other than selfSebastian Huber2013-08-201-0/+23
|
* smp: Add Deterministic Priority SMP SchedulerSebastian Huber2013-08-201-12/+12
|
* smp: Optimize Simple SMP schedulerSebastian Huber2013-08-201-12/+12
| | | | | | | | | | Add Thread_Control::is_in_the_air field if configured for SMP. This helps to simplify the extract operation and avoids superfluous inter-processor interrupts. Move the processor allocation step into the enqueue operation. Add and use _Scheduler_simple_smp_Get_highest_ready(). Add and use _Scheduler_SMP_Get_lowest_scheduled().
* correct memory model in smpatomic test caseWeiY2013-08-196-13/+13
|
* smptests/smpswitchextension01: Fix start sequenceSebastian Huber2013-08-091-0/+2
| | | | Start the toggler after the context is initialized.
* score: Per-CPU thread dispatch disable levelSebastian Huber2013-08-091-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use a per-CPU thread dispatch disable level. So instead of one global thread dispatch disable level we have now one instance per processor. This is a major performance improvement for SMP. On non-SMP configurations this may simplifiy the interrupt entry/exit code. The giant lock is still present, but it is now decoupled from the thread dispatching in _Thread_Dispatch(), _Thread_Handler(), _Thread_Restart_self() and the interrupt entry/exit. Access to the giant lock is now available via _Giant_Acquire() and _Giant_Release(). The giant lock is still implicitly acquired via _Thread_Dispatch_decrement_disable_level(). The giant lock is only acquired for high-level operations in interrupt handlers (e.g. release of a semaphore, sending of an event). As a side-effect this change fixes the lost thread dispatch necessary indication bug in _Thread_Dispatch(). A per-CPU thread dispatch disable level greatly simplifies the SMP support for the interrupt entry/exit code since no spin locks have to be acquired in this area. It is only necessary to get the current processor index and use this to calculate the address of the own per-CPU control. This reduces the interrupt latency considerably. All elements for the interrupt entry/exit code are now part of the Per_CPU_Control structure: thread dispatch disable level, ISR nest level and thread dispatch necessary. Nothing else is required (except CPU port specific stuff like on SPARC).
* smptests/smpmigration01: Fix start sequenceSebastian Huber2013-08-081-0/+2
| | | | Start the runner after the context is initialized.
* smptests/smp07: Use suspend instead of deleteSebastian Huber2013-08-061-1/+2
|
* smptests/smpswitchextension01: New testSebastian Huber2013-08-056-0/+298
|
* smptests/smpmigration01: New testSebastian Huber2013-08-056-0/+262
|
* smptests/smppsxsignal01: New testSebastian Huber2013-07-306-0/+227
|
* smptests/smpsignal01: New testSebastian Huber2013-07-306-0/+226
|
* smp: Add and use _Per_CPU_Get()Sebastian Huber2013-07-301-2/+2
| | | | | | Add and use _Per_CPU_Get_by_index() and _Per_CPU_Get_index(). Add _Per_CPU_Send_interrupt(). This avoids direct access of _Per_CPU_Information.
* smptests/smp08: Print missing newlineSebastian Huber2013-07-221-1/+1
|
* score: Error for non-preemptible tasks on SMPSebastian Huber2013-07-228-266/+16
| | | | | | | A common use case for disabled preemption was to ensure mutual exclusion on single-processor configurations. On SMP this does not work. To abandon non-preemptible tasks simplifies the scheduler.
* rtems: Error for task variables on SMPSebastian Huber2013-07-221-0/+9
| | | | Task variables are not supported on SMP.
* rtems: Error for task delete on SMPSebastian Huber2013-07-222-1/+7
| | | | Task deletion is currently not implemented on SMP configurations.
* sapi: Add rtems_configuration_is_smp_enabled()Sebastian Huber2013-07-226-0/+84
| | | | | | Add a configuration field which indicates if the SMP mode of operation is enabled. This can be used to disable features unsupported on SMP, e.g task variables.